首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >link_to更新(无表单)

link_to更新(无表单)
EN

Stack Overflow用户
提问于 2011-01-21 03:53:02
回答 2查看 22.1K关注 0票数 22

我想要一个链接来更新资源,而不是使用HTML表单。

路由:

代码语言:javascript
复制
resources :users do
  resources :friends
end    

Rake路由:

代码语言:javascript
复制
 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通过一个简单的链接来更新一个朋友,如下所示:

代码语言:javascript
复制
<%= link_to "Add as friend", user_friend_path(current_user, :method=>'put') %>

但当我单击该链接时,它会尝试进入show操作。

这样做的正确方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-21 04:09:25

代码语言:javascript
复制
link_to "Add as friend", user_friend_path(current_user, @friend), :method=> :put

将插入一个属性'data-method‘设置为'put’的链接,该链接将被rails javascript拾取并在幕后转换为表单……我想这就是你想要的。

您应该考虑使用:post,因为您似乎是在两个用户之间创建一个新的链接,而不是更新它。

票数 38
EN

Stack Overflow用户

发布于 2020-05-23 02:56:26

问题是您将该方法指定为URL查询参数,而不是link_to方法的一个选项。

这里有一种方法可以让你实现你想要的:

代码语言:javascript
复制
<%= link_to "Add as friend", user_friend_path(current_user, friend), method: 'put' %>
# or more simply:
<%= link_to "Add as friend", [current_user, friend], method: 'put' %>

使用link_to帮助程序更新模型属性的另一种方法是传递查询参数。例如:

代码语言:javascript
复制
<%= link_to "Accept friend request", friend_request_path(friend_request, friend_request: { status: 'accepted' }), method: 'patch' %>
# or more simply:
<%= link_to "Accept friend request", [friend_request, { friend_request: { status: 'accepted' }}], method: 'patch' %>

它会发出这样的请求:

代码语言:javascript
复制
Started PATCH "/friend_requests/123?friend_request%5Bstatus%5D=accepted"
Processing by FriendRequestsController#update as 
  Parameters: {"friend_request"=>{"status"=>"accepted"}, "id"=>"123"}

您可以在控制器操作中处理它,如下所示:

代码语言:javascript
复制
def update
  @friend_request = current_user.friend_requests.find(params[:id])
  @friend_request.update(params.require(:friend_request).permit(:status))
  redirect_to friend_requests_path
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4751869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档