Rails button_to参数混淆

时间:2014-09-10 14:07:14

标签: ruby-on-rails ruby

我目前正试图将许多参数推送到button_to方法,但无济于事。我目前正在使用rails docs来查看它可以支持的参数 - 但我遇到了麻烦。

link to api docs

<%= button_to 'My title.',{:action => "update", :answer => "!!===@@@", :method => :patch, :data => {:confirm => "Are you sure?"}}, {:class => "btn btn-danger"}%>

我希望在按钮中添加一些html类,重新定义其HTTP方法,并调用javascript提示框(通过:data,:confirm),并在提交内容中添加:answer参数。< / p>

我在使用rails来解析所有这些问题时遇到了麻烦。

1 个答案:

答案 0 :(得分:2)

“正如它在此页面上所解释的那样http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html ,额外的参数(例如:你的情况下的答案)可以用:params选项传递。

第二个参数需要是可以解析为完整路径的东西,比如“/ foos / 123 / update”。您可以使用{:action => "update", :id => foo.id}执行此操作:在这种情况下,rails将使用当前控制器来确定要在URL中使用哪个控制器。我个人认为明确并使用像update_foo_path(foo)之类的路径助手或其他任何东西更清晰,这只会生成一个字符串oike "/foos/123/update"的完整路径。

尝试这样的事情:

<%= button_to 'My title.', {:action => "update", :id => foo.id}, :params => {:answer => "!!===@@@"}, :method => :patch, :form_class => "btn btn-danger", :data => {:confirm => "Are you sure?"} %>

button_to是一种痛苦的屁股,因为它有一个参数列表,它们都是哈希值或单个键值对,而且很容易让结构错误。我倾向于避免任何复杂的事情,并使用form_tag:它更具可读性,不太可能出错。