web-dev-qa-db-ja.com

link_to update(フォームなし)

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がそのリンクに出会うと、彼はショーアクションに入ろうとします。
質問は:それを行うための正しいリンクは何ですか?

21
Joe
link_to "Add as friend", user_friend_path(current_user, @friend), :method=> :put

属性「data-method」が「put」に設定されたリンクを挿入します。これは、Rails javascriptによって取得され、舞台裏でフォームに変換されます...それはあなたが望むものです。

更新するのではなく、2人のユーザー間に新しいリンクを作成しているため、:postの使用を検討する必要があります。

36
Jeppe Liisberg