HTMLフォームを使用せずに、リソースを更新するためのリンクが必要です。
ルート:
resources :users do
resource :profile, :controller=>"profiles"
resources :friends
end
レーキルート:
user_friend GET /users/:user_id/friends/:id(.:format){:action=>"show", :controller=>"friends"}
PUT /users/:user_id/friends/:id(.:format){:action=>"update", :controller=>"friends"}
Putを使用して、次のような単純なリンクで友達を更新したいと思います。
<%= link_to "友達として追加"、user_friend_path(current_user、:method => 'put')%>
しかし、Railsがそのリンクに出会うと、彼はショーアクションに入ろうとします。
質問は:それを行うための正しいリンクは何ですか?
link_to "Add as friend", user_friend_path(current_user, @friend), :method=> :put
属性「data-method」が「put」に設定されたリンクを挿入します。これは、Rails javascriptによって取得され、舞台裏でフォームに変換されます...それはあなたが望むものです。
更新するのではなく、2人のユーザー間に新しいリンクを作成しているため、:postの使用を検討する必要があります。