Rails: 简单表单外的多个提交按钮
Rails: multiple submit button outside simple form
假设我有一个 Article 模型,在 Article 模型 'settings' 视图中,我在表单外有两个提交按钮,"update Details" 和 "Next Template"。
我的问题是我怎么知道在控制器中点击了哪个按钮。这两个提交按钮都在一个简单的表单之外。
我试过:
<%= f.submit "update Details",name: "update_details", class: "x-update" %>
<%= f.submit 'Next Template', name: "next_template", class: "x-next" %>
和控制器上的逻辑相同
if params[:update_details]
[..]
elsif params[:next_template]
[..]
end
但它不起作用。我怎么做?我无法更改路由,所以有没有办法发送由 [:params] 获取的不同变量?
我想你可以这样做:
<%= f.submit "update Details",name: "update_details", value: true, class: "x-update" %>
<%= f.submit 'Next Template', name: "next_template", value: true, class: "x-next" %>
我认为您可以选择使用相同的名称和不同的值。
<%= f.submit "update Details",name: "next_template", value: false, class: "x-update" %>
<%= f.submit 'Next Template', name: "next_template", value: true, class: "x-next" %>
在控制器中:
if params[:next_template]
something
else
something_else
end
请尝试将两个按钮都放在表单中,然后尝试使用相同的逻辑。
我通过输入 html 表单模板解决了这个问题:
<input type="hidden" name= "action_type" id="action_type">
然后在 JavaScript 文件中我们添加了
$('.x-update').on 'click', ->
$("#action_type").val("exit")
$("#details-form").submit()
然后在控制器文件中我们检查了参数:
if params[:action_type] == "exit"
redirect_to #your desired path
else
redirect_to #based on given path
就是这样。有效。
尝试在控制器中检查触发提交时获得的参数。
render plain: params
附加 您可以在表单中使用 "hidden_field_tag" 选项。
<%= hidden_field_tag 'plan', params[:plan] = 2 %>
假设我有一个 Article 模型,在 Article 模型 'settings' 视图中,我在表单外有两个提交按钮,"update Details" 和 "Next Template"。
我的问题是我怎么知道在控制器中点击了哪个按钮。这两个提交按钮都在一个简单的表单之外。 我试过:
<%= f.submit "update Details",name: "update_details", class: "x-update" %>
<%= f.submit 'Next Template', name: "next_template", class: "x-next" %>
和控制器上的逻辑相同
if params[:update_details]
[..]
elsif params[:next_template]
[..]
end
但它不起作用。我怎么做?我无法更改路由,所以有没有办法发送由 [:params] 获取的不同变量?
我想你可以这样做:
<%= f.submit "update Details",name: "update_details", value: true, class: "x-update" %>
<%= f.submit 'Next Template', name: "next_template", value: true, class: "x-next" %>
我认为您可以选择使用相同的名称和不同的值。
<%= f.submit "update Details",name: "next_template", value: false, class: "x-update" %>
<%= f.submit 'Next Template', name: "next_template", value: true, class: "x-next" %>
在控制器中:
if params[:next_template]
something
else
something_else
end
请尝试将两个按钮都放在表单中,然后尝试使用相同的逻辑。
我通过输入 html 表单模板解决了这个问题:
<input type="hidden" name= "action_type" id="action_type">
然后在 JavaScript 文件中我们添加了
$('.x-update').on 'click', ->
$("#action_type").val("exit")
$("#details-form").submit()
然后在控制器文件中我们检查了参数:
if params[:action_type] == "exit"
redirect_to #your desired path
else
redirect_to #based on given path
就是这样。有效。
尝试在控制器中检查触发提交时获得的参数。
render plain: params
附加 您可以在表单中使用 "hidden_field_tag" 选项。
<%= hidden_field_tag 'plan', params[:plan] = 2 %>