0

基本上我正在尝试使用以下代码在网站上列出我的数据库中的所有事件:

<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 中保存这个表单?在此示例中,我已加入(=单击)事件 2。将此表单保存回数据库的最佳方法是什么。理想情况下,我在网站末尾有一个“更新”或“保存”按钮,这对我来说是这样的。

但是当我在我的表单中添加一个像这样的简单提交按钮时

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

然后每次单击我的单选按钮之一时都会触发我的提交按钮。有谁知道解决这个问题?

4

1 回答 1

0

好吧,做一个 event[] 单选按钮是相当简单的,当提交时将提交一个选定选项的数组。

按钮标签看起来像这样,调整你的类等。

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

那么控制器看起来像

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

这个粗略的假设你的用户模型中有一个列来存储他们要去的事件。一个更灵活的模型是让 user :has_many events :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 节)

于 2012-07-27T17:56:27.153 回答