我想要一个更新资源的链接,而不使用HTML表单。
路线:
resources :users do
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 "Add as friend", user_friend_path(current_user, :method=>'put') %>
但是当我点击链接时,它试图进入显示操作。
做这件事的正确方法是什么?
3条答案
按热度按时间dfddblmv1#
将插入一个属性“data-method”设置为“put”的链接,这将反过来被rails javascript拾取并在后台转换为一个表单...我猜这就是你想要的。
你应该考虑使用:post,因为你是在两个用户之间创建一个新的链接,而不是更新它。
gojuced72#
问题是您将该方法指定为URL查询参数,而不是
link_to
方法的选项。这里有一个方法可以实现你所寻找的:
使用
link_to
帮助器更新模型属性的另一种方法是传递查询参数。会提出这样的请求:
您可以在控制器操作中处理,如下所示:
ecbunoof3#
在rails 7中,这对我来说非常有效:
注:你可以通过删除
form: { data: { turbo: true } }
来进一步简化它--我之所以包含它,是因为我的应用程序默认关闭了turbo,但大多数人可能不会,所以你可以删除它。