2011-03-11 58 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