如何在form_for submit上传递URL?我试图使用一个表单,每个按钮指向每个控制器的动作,一个是搜索,另一个是创建。是否可以在同一个表单上有两个具有不同操作的提交按钮?
<%= form_for @people do |f| %>
<%= f.label :first_name %>:
<%= f.text_field :first_name %><br />
<%= f.label :last_name %>:
<%= f.text_field :last_name %><br />
<%= f.submit(:url => '/people/search') %>
<%= f.submit(:url => '/people/create') %>
<% end %>
3条答案
按热度按时间liwlm1x91#
没有一种简单的Rails方法可以根据按下的按钮将表单提交到不同的URL。您可以在每个按钮上使用JavaScript来提交到不同的URL,但处理这种情况的更常见方法是允许表单提交到一个URL,并检测控制器操作中按下的按钮。
对于第二种方法,使用像这样的提交按钮:
您的操作看起来像这样:
有关这两种方法的更多信息,请参见this similar question。
另请参阅Railscast episode 38 on multibutton forms。
kmbjn2e32#
此问题与this one非常相似,但略有不同
我只是想强调一下,对上述问题的一些回答也建议向路由添加约束,这样你就可以将查询路由到不同的控制器操作!
作者:vss123
我们使用Rails中的高级约束解决了这个问题。
这个想法是有相同的路径(因此也有相同的命名路由和动作),但有路由到不同动作的约束。
CommitParamRouting是一个简单的类,有一个方法匹配?如果提交参数与给定的示例属性匹配,则返回真。值
这可以作为gem commit_param_matching使用。
vwkv1x7d3#
我也面临着同样的问题。
我有一个创建表单。但是,如果记录已经存在,我想通过搜索结果显示结果。
选项一:有两种形式
有两种不同的形式:
当你提交上面的表单时,写一些JavaScript来提交下面的表单。
选项二:有一个表格,两个按钮