2

在我的 rails 应用程序中,我希望用户能够通过执行 ajax 请求并将项目 ID 添加到数据库中来隐藏他们墙上的任何内容。

这是我要模仿的请求:

Started POST "/report_fixed_vulns" for 127.0.0.1 at 2013-08-19 21:28:45 +0100
Processing by ReportFixedVulnsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"xxx", "report_fixed_vuln"=>{"report_id"=>"2", "vuln_id"=>"2", "user_id"=>"2"}, "commit"=>"Create Report fixed vuln"}

我尝试使用以下代码来执行此操作。

<%= button_to 'Submit', report_fixed_vuln_path(:report_fixed_vuln => {:report_id => @report_id, :vuln_id => plugin.first.id, :user_id => current_user.id}), :remote => true, :method => :put %>

但是,这会产生不同的请求:

Started PUT "/report_fixed_vulns/323?report_fixed_vuln%5Breport_id%5D=323&report_fixed_vuln%5Buser_id%5D=1&report_fixed_vuln%5Bvuln_id%5D=443" for 127.0.0.1 at 2013-08-19 21:32:51 +0100
Processing by ReportFixedVulnsController#update as JS
  Parameters: {"authenticity_token"=>"xxx", "report_fixed_vuln"=>{"report_id"=>"323", "user_id"=>"1", "vuln_id"=>"443"}, "id"=>"323"}

这是我的问题:我如何模仿第一个请求使用button_to(不需要输入参数——它们已经在页面上)

4

1 回答 1

3

你应该参考这个路由指南:

http://guides.rubyonrails.org/routing.html

它说 create 方法的助手是:

POST    /admin/posts    create  admin_posts_path

因此,在您的情况下report_fixed_vulns_path,您应该使用具有相同参数但带有method: :post(PUT 用于更新)的助手(注意复数) :

<%= button_to 'Submit', report_fixed_vulns_path(:blabla => hash), :remote => true, :method => :post %>

如果要在单击按钮后立即隐藏按钮,可以添加 onclick 事件:(jQuery)

<%= button_to 'Submit', report_fixed_vulns_path(:blabla => hash), :remote => true, :method => :post, :onclick => '$(this).hide();' %>
于 2013-08-19T20:55:33.280 回答