一个表单中有两个提交按钮。

8
我有一个关于表单的问题。我有一个相当标准的表单,可以保存带有标题和正文的文章(在我的应用程序中称为eReport)。该表还有一个“发布”字段,它是布尔值。只有当此字段设置为true时,保存的eReport才会显示在公共网站上,默认值为false。
我想在表单末尾显示两个按钮,而不是默认的复选框:一个“立即发布”按钮和一个“保存草稿”按钮。如果用户按前者,则发布字段将设置为true。如果按后者,则为false。在PHP中,我使用不同名称值的2个提交字段进行显示,然后使用if / else语句处理输入以确定要构建的适当SQL查询。在Rails中,我假设我将在控制器中放置此逻辑,在适当的操作下,但我不知道如何操纵按钮的名称或ID值。
记录一下,我正在使用Formtastic,但如果有人能向我展示如何使用默认的Rails表单标记来完成这个操作,那也可以。以下是我当前表单的代码:
<% semantic_form_for @ereport do |form| %>

  <% form.inputs do %>
    <%= form.input :title %>
    <%= form.input :body %>
  <% end %>
  <% form.buttons do %>
    <%= form.commit_button :label => "Publish Now" %>
<%= form.commit_button :label => "Save as Draft" %>
  <% end %>
<% end %>

感谢您提前的帮助!

3个回答

20

我不了解formtastic,但是使用默认的Rails表单构建器,您可以这样做:

<%= form.submit "Save with option A", :name => "save_option_a" %>
<%= form.submit "Save with option B", :name => "save_option_b" %>

然后在控制器中,您可以在参数中获取这些内容:

if params[:save_option_a]
  # do stuff
end

1

除了@iddlefingers的答案之外,这里是应用程序日志的视图(由于解释目的而剥离了一些无用参数)

Parameters: {"utf8"=>"✓", ..., "comentar"=>"Confirmar"}

我们可以看到comentar是参数的名称,"Confirmar"是它的值,也是按钮的文本。

这是通过submit_tag "Confirmar", :name => 'comentar'得到的。

因此,一般来说,您可以(如果希望减少使用的params数量)有几个submit_tag "onevalue", :name => 'SAMEname'submit_tag "othervalue", :name => 'SAMEname'等等。

然后在您的控制器中检索它们。

if params[:SAMEname] == "onevalue"
# do stuff
elsif params[:SAMEname] == "othervalue"
#do different stuff
end

0

我认为你需要使用jQuery。 你可以绑定按钮点击事件并提交表单到指定位置。


最近开始学习jQuery,但我会记住的。谢谢! - joshukraine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接