如何将额外参数传递给link_to远程?

AnA*_*ice 0 ruby-on-rails ruby-on-rails-3

鉴于以下内容:

<%= link_to "Add", group_request_path(gr), :confirm => "Are you sure?", :method=> :put, :remote => true %>

<%= link_to "Ignore", group_request_path(gr), :confirm => "Are you sure?", :method=> :put, :remote => true %>
Run Code Online (Sandbox Code Playgroud)

如何通过link_to上面的添加或忽略来传递决策参数?是否可以选择使用link_to以某种方式添加URL参数?我不想使用表格.

mea*_*gar 5

*_path助手接受一个选项哈希附加到路径作为查询字符串.

在您的示例中,假设group_request_path(gr)输出类似/group_requests/123,您可以添加带有add/ignore操作的查询字符串,如下所示:

group_request_path(gr, :action => 'add') # /groups_requests/123?action=add
Run Code Online (Sandbox Code Playgroud)

要么

group_request_path(gr, :add => 1) # /groups_requests/123?add=1
Run Code Online (Sandbox Code Playgroud)

然而,这可能不是解决这个问题的正确方法.看起来您应该在控制器中有不同的操作,以及特定于添加或忽略的路由.您必须添加以下内容config/routes.rb:

put 'group_requests/:id/add'    => 'groups_requests#add',    :as => :add_group_request
put 'group_requests/:id/ignore' => 'groups_requests#ignore', :as => :ignore_group_request
Run Code Online (Sandbox Code Playgroud)

然后你的链接变成了

<%= link_to "Add", add_group_request_path(gr), :confirm => "Are you sure?", :method=> :put, :remote => true %>

<%= link_to "Ignore", ignore_group_request_path(gr), :confirm => "Are you sure?", :method=> :put, :remote => true %>
Run Code Online (Sandbox Code Playgroud)