簡體   English   中英

Rails-帶單選按鈕的動態表單

[英]Rails - Dynamic form with radio buttons

基本上,我試圖使用以下代碼列出網站上數據庫中的所有事件:

<table class="table">
            <thead>
            <tr>
                <th>Event</th>
                <th>Join Event?</th>
            </tr>
            </thead>
            <tbody>        
           <% @events.each do |e| %>    
           <p>              
            <tr>            
              <td>
              <div>
                <%= e.name %>
              </div>
              </td>
              <td>
              <div class="btn-group" data-toggle="buttons-radio">                                       
                 <button class="btn" class-toggle="btn-success"><i class="icon-ok"></i></button>
                 <button class="btn btn-danger active" class-toggle="btn-danger"><i class="icon-remove"></i></button>                                               
              </div>    
              </td>
            </tr>           
           </tbody>                 
            <% end %>              
           </table>  

您可以通過單擊單選按鈕輕松地加入活動。 現在我的問題是如何在Rails中保存此表單? 在此示例中,我加入了(= clicked)事件2。將此表單保存回數據庫的最佳方法是什么。 理想情況下,我在網站末尾有一個“更新”或“保存”按鈕,可以為我完成此操作。

但是當我在我的表單中添加一個像這樣的簡單提交按鈕時

...same code as above
          </td>
        </tr>           
       </tbody>  
            <%= f.submit 'Save form' %>        
        <% end %>              
       </table>                 

那么每當我單擊一個單選按鈕時,都會觸發我的提交按鈕。 有人知道解決此問題的方法嗎?

好吧,做一個event []單選按鈕很簡單,當提交該按鈕時,它會提交一組選定的選項。

按鈕標簽看起來像這樣,可以根據您的班級進行調整等。

<%= radio_button_tag event[], e.id %>

那么控制器看起來像

def create
  ...
  user.events = params[:event] unless params[:event].empty?
  user.save
  ...
end

粗略地假設您的用戶模型中有一個列來存儲他們將要去的事件。 一個更靈活的模型是讓用戶:has_many事件:through => user_events。 除了看起來像,控制器邏輯相同

def create
  ...
  if params[:event]
    params[:event].each do |e|
      user.user_event.new(:event_id => e)
    end
  end
  ....
end

資源:表單標簽助手: 在此處使用:has_many:通過關聯: 在此處 (第2.4節)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM