Rails | |
![]()
flash は Adobe のやつじゃなくて flash[:hoge] とかで内容を一画面移動表示してくれるやつ. リダイレクトしたときとかに便利だよね.
flash が表示された状態で同じページに遷移したときに 消えてくれるはずの flash が消えてくれない.
仕方ないので
flash.discard
として強制的に flash が保持している内容を削除した.
Rails | |
![]()
モデルで validates_presence_of などのメソッドでバリデートを定義しておくとそのモデルを保存するときに検証してくれる.
例:
def create ... ... if @hoge.save else #バリデートに通らなかった場合 render :action => 'new' end end
上の例のようなコントローラ定義だとバリデートに通らなかった場合, action: new のページが表示されて
<%= error_messages_for %>
がビューにあればそこにエラーメッセージが表示される.
動作としては問題ないんだけど, new のページ URL をルーティングで変更している場合 URL が気持ち悪いものになってしまう.
そこで render メソッドではなく redirect_to メソッドで綺麗な URL で "new" のページを表示させることにする.
がここで問題発生.
redirect_to で飛ばした new ページでは エラーの内容を保持してくれていないので
<%= error_messages_for %>
にエラーが表示されない.
解決策として
flash を使うことにした.
def create ... ... if @hoge.save else flash[:notice] = render_to_string :partial => "layouts/validates_error_messages", :locals => { :errors => @hoge.errors.full_messages } redirect_to "[new のアクションが呼ばれる URL]" end end
エラーメッセージを綺麗に表示させるために render_to_string :partial を使う.
# app/view/layouts/_validates_error_messages.html.erb <p><%= errors.size %>個のエラーがあります</p> <ul> <% errors.each do |error| -%> <li><%= error %></li> <% end -%> </ul>
こんな感じ.
これでエラーメッセージが表示できた.
Rails | |
![]()
メールも送れなきゃだめだなてことで ActionMailer を使う.
メールの送信方法は sendmail をつかえるよなので sendmail をインストール.
config/environment.rb
config.action_mailer.delivery_method = :sendmail
class Mailer < ActionMailer::Base
def notice(*to)
subject "test"
from "hoge@exapmle.com"
recipients to
body "test"
end
end
としておいてあるコントローラから
Mailer.deliver_notice("fuga@example.com")
としてメールを送ろうとしたら "Internal Server Error" が返ってくる.メール自体は送られる.
apache のエラーログを見ると
[error] [client 127.0.0.1] Premature end of script headers: dispatch.fcgi
というエラーが出てる.
調査中.
上のエラーが出た原因はタイムアウトだったっぽい.
[warn] mod_fcgid: read data timeout in 40 seconds
なのも出てた.
このタイムアウトを引き起こしているのは何だったかと言うとどうも sendmail がメールを送信するのに時間がかかっていたようだ.
/var/log/mail.log に
My unqualified host name (*****) unknown; sleeping for retry
てなエラーがでてて遅延が起こってたようだ.
を参考に /etc/hosts をごにょったら直った.
Lalaine2012/01/11 03:29How neat! Is it rlealy this simple? You make it look easy.
kamxklgmp2012/01/11 19:13Gfl7gB <a href="http://ugbksvususpx.com/">ugbksvususpx</a>
fpifznx2012/01/11 23:58bp2o0L , [url=http://pkrsjubkehqo.com/]pkrsjubkehqo[/url], [link=http://xrftzeettetc.com/]xrftzeettetc[/link], http://dmnbsgnhwrqs.com/
darfsu2012/01/12 01:224pNccm , [url=http://gkoqlseqtfka.com/]gkoqlseqtfka[/url], [link=http://kybtizqritze.com/]kybtizqritze[/link], http://ypziwuhopfzj.com/
mifpdmvduv2012/01/12 02:46ay3PSk , [url=http://ufcgsshmdiht.com/]ufcgsshmdiht[/url], [link=http://cbowvrcinorl.com/]cbowvrcinorl[/link], http://xwnznhtjhrhd.com/
fldsqtwxq2012/01/12 05:24XoVb0H , [url=http://dymotzogbpjq.com/]dymotzogbpjq[/url], [link=http://utfclygdzaxk.com/]utfclygdzaxk[/link], http://evypzbivsyyc.com/
vxthzpzr2012/01/12 06:51uX9FF0 , [url=http://aerxvuowzxhn.com/]aerxvuowzxhn[/url], [link=http://fyqmnqiycddf.com/]fyqmnqiycddf[/link], http://pabstmprrrlv.com/
timiabdzr2012/01/12 08:06i7la8T , [url=http://wshgefvzgwfm.com/]wshgefvzgwfm[/url], [link=http://smvnczkqfvyw.com/]smvnczkqfvyw[/link], http://zudogqfyzlwu.com/
thmwiep2012/01/12 09:225nfHMk , [url=http://tkzsnjbwvmmp.com/]tkzsnjbwvmmp[/url], [link=http://vvxyvrgzlzyt.com/]vvxyvrgzlzyt[/link], http://maionufxyqdc.com/
vzfwsxrv2012/01/12 10:36b4yvy4 , [url=http://enoyquwqjpys.com/]enoyquwqjpys[/url], [link=http://wphneewyntmd.com/]wphneewyntmd[/link], http://ggppcipqclfk.com/
nfxvtmpafcs2012/01/12 11:56Ekad0L , [url=http://siqxkfsjjtgx.com/]siqxkfsjjtgx[/url], [link=http://gmcaarnsmhbc.com/]gmcaarnsmhbc[/link], http://epqhxpllnzjs.com/
pwxqzdia2012/01/12 13:15i8w8dW , [url=http://hpobvupnelta.com/]hpobvupnelta[/url], [link=http://awdogickjqci.com/]awdogickjqci[/link], http://qtnkepzwgoqh.com/
mbycyytrmof2012/01/12 14:35ueGR0q , [url=http://jjkotzghxmjv.com/]jjkotzghxmjv[/url], [link=http://ejrfqzdrspmu.com/]ejrfqzdrspmu[/link], http://woxmiyomjtig.com/
luhpfewah2012/01/14 19:33nEo7eS <a href="http://qjgvkmnahjfi.com/">qjgvkmnahjfi</a>
bzwdoy2012/01/16 03:32RdR71J , [url=http://djfbzdtiskim.com/]djfbzdtiskim[/url], [link=http://yciseibgwcjl.com/]yciseibgwcjl[/link], http://tqocxnjlmjcb.com/
Rails | |
![]()
sanitize メソッドは うまいこと script 要素やらなんやらを取り除いてくれて便利.
が,XMLのProcessing Instructions ("<?hoge ?>" みたいなやつね.) をサニタイズしようとしたときに問題が発生.
&lt;?hoge ?>
のようにサニタイズされてしまう.
どうも,HTML タグとしてよまれないっぽい. config.action_view.sanitized_allowed_tags に追加する以前の問題だなぁ.
Rails すげー. 危うく実装するところだったぜ.
CassieHallelujah! I ndeeed this-you're my savior.
ntrhlmshpGk25Z , [url=http://jdaxglblwoeo.com/]jdaxglblwoeo[/url], [link=http://tikvgztnpelw.com/]tikvgztnpelw[/link], http://euehzkblabmi.com/