2011-01-05 48 views
1

我想用一個表單來創建一個管理頁面......其中有複選框表示管理員選擇了哪個圖像,然後是三個提交按鈕:批准,編輯,刪除。3個提交按鈕的導軌形式

form_tag是做這件事的最好方法嗎?如果沒有,那麼如果我只是使用簡單的按鈕,我怎樣才能連接它們從選定的複選框收集數據?

謝謝...

回答

2

一種方法是你可以創建一個帶有三個按鈕的窗體。如果您使用的是form_tag,則可以通過執行submit_tag三次來創建三個按鈕。 submit_tags使用相同的:name參數,但使用不同的值。處理表單提交時,檢查他們點擊了哪個按鈕,然後重新路由到適當的操作。

這樣做可以避免必須使用js共享三種不同形式的複選框,依此類推。

1

有同樣的問題,我試圖使用form_for,它似乎工作。我只是添加了一個提交按鈕來執行其他操作。

= form_for @request do |f| 
    = render 'shared/error_messages', object: f.object 

    = f.label :status 
    = f.text_field :status 

...some more fields 

    = f.submit "Save changes", class: "btn btn-large btn-primary" <--- This is initial button 
    = f.submit "Accept", name: 'accept', class: "btn btn-large btn-primary" 
    = f.submit "Reroute", name: 'reroute', class: "btn btn-large btn-primary" 
    = f.submit "Solve", name: 'solve', class: "btn btn-large btn-primary" 

然後在控制器,你檢查哪個按鈕被按下:

if !params[:accept].nil? 

if !params[:reroute].nil? 

if !params[:solve].nil? 

最初的按鈕,你可以在渲染頁面的源代碼發現的名稱。這對我來說是「承諾」。