Rails - 带单选按钮的动态表单

时间:2012-07-27 15:02:40

标签: ruby-on-rails ruby-on-rails-3 forms

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

<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.将此表单保存回数据库的最佳方法是什么。理想情况下,我有一个&#34;更新&#34;或&#34;保存&#34;网站末尾的按钮,这对我来说就是这样。

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

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

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

1 个答案:

答案 0 :(得分:0)

嗯,做一个event []单选按钮非常简单,当提交时它将提交所选选项的数组。

按钮标签看起来像这样,根据您的班级等进行调整。

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

然后控制器看起来像

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

这个ofcoarse假设您的用户模型中有一列用于存储他们要访问的事件。更灵活的模型是拥有用户:has_many events:through =&gt; user_events。将应用相同的控制器逻辑,除非它看起来像

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

资源: 表格标签助手:here 使用:has_many:通过关联:here(第2.4节)