環境:2.3.8
今回、link_toを使って、独自のメソッドを実効し、処理が終わったらindexに戻るという所をやったのですが、なかなかうまくいかない。
<%= link_to( detail.name,
※最後の2行はパラメータです。
最初はこんな感じで作ったのですが、
ActiveRecord::RecordNotFound in AcceptsController#show
Couldn't find Accept with ID=check_on
ってエラーが返ってきました。
controllerには、もちろんそのメソッドを作ってあります。
あ、「AcceptsController#show」ってshowメソッド見に行ってる?
ルーティングの問題みたいですね。
調べてみると、routses.rbにルーティングを追加しないといけないようです。
map.connect "accepts/check_on", :controller => "accepts", :action => "check_on"
これでルーティングは解決。
しかし、ルーティングはうまくいきましたが、結果をみると、check_onメソッドの処理が空振りしている様子。
調べること1時間・・・
<a href="/accepts/check_on?accept_id=25&item_id=1">test</a>
ぐはっ! "&"がHTML変換されてる><;
調べてみると、":escape => false"でHTML変換をOFFらないといけないようです。。。
調べたついでに見つけたのが、link_to_ifヘルパー。
リンクにするとき、「○○だったらリンク、そうでなければテキストのまま表示」としてくれるようです。
賢い。ちょうどいいので実装しよう!
条件の付け方に、若干詰まりましたが、なんとか以下のように実装できました。
<%= link_to_unless(detail.check_flg == "1",
detail.name,
なんとか出来た(^^;
ほんとうは、link_toだとURLの指定だけで処理が出来てしまうので、セキュリティ上は問題があります。
DB更新などがある場合は、submit_tagなどsubmitボタンを使った方がいいですね。
0 件のコメント:
コメントを投稿