link_to_remote を使用して別のコントローラーのアクションを呼び出す方法
:url => {:controller => "Posts", :action => "update"} が機能しない
link_to_remote を使用して別のコントローラーのアクションを呼び出す方法
:url => {:controller => "Posts", :action => "update"} が機能しない
メソッド:
link_to_remote(name, options = {}, html_options = nil)
次のようなハッシュを渡します。
link_to_remote "hug kittens", { :url => { :controller => 'kittens', :action => 'show' } }
2 番目の引数 (オプション) が機能するためです。検証済み。
結果:
<a onclick="new Ajax.Request('/kittens/hug', {asynchronous:true, evalScripts:true, parameters:'authenticity_token=' + encodeURIComponent('/BdZwHdC/QqtBJsdCU+cCHxabHj/QHUT6i8ggbr5CtY=')}); return false;" href="#">hug kittens</a>
実装の問題は、「実際の」更新 URL がないことです (手動で作成した場合を除く)。編集フォームの URL を見てください。実際には「posts/:post_id」へのポストリクエストです。
<%= link_to_remote "Save", :url=>{:controller => "Posts", :action => "update"}, :update=>"div_id" %>