在我的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
模仿第一个请求(不需要输入参数 - 它们已经存在于页面上)
答案 0 :(得分: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();' %>