2011-03-11 77 views
8

我对表单有疑问。我有一个相当标准的表格,用标题和正文保存了一篇文章(在我的应用中称为eReport)。该表还具有布尔型的“发布”字段。如果此字段设置为true,则保存的eReport仅在公共站点上显示,其中false为默认值。2提交表单中的按钮

而不是默认复选框,我想在窗体的末尾显示两个按钮:“立即发布”按钮和“另存为草稿”按钮。如果用户按下前者,则发布的字段将设置为true。如果后者,那么是假的。在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 %> 

在此先感谢您的帮助!

回答

20

我不知道formtastic,但默认轨表单生成器,你可以做这样的:

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

然后在控制器,你可以在PARAMS挑选那些最高:

if params[:save_option_a] 
    # do stuff 
end 
+0

感谢您的信息!这很好。 – joshukraine 2011-03-11 12:27:14

0

我想你需要使用jQuery。 您可以绑定按钮单击事件并提交指定位置的表单。

+0

刚开始学习jQuery这几天,但我会牢记在心。谢谢! – joshukraine 2011-03-11 12:27:45

1

除了@iddlefingers回答,这里是日志的应用程序的视图(条带化,由于便于说明一些无用的PARAMS)

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