【问题标题】:Rails - Dynamic form with radio buttonsRails - 带有单选按钮的动态表单
【发布时间】:2012-07-27 15:02:39
【问题描述】:

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

<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>                 

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

【问题讨论】:

  • 抱歉,为什么添加提交按钮会导致单选按钮提交表单?添加按钮不应改变表单任何其他部分的行为...

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


【解决方案1】:

好吧,做一个 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

资源: 表单标签助手:here 使用 :has_many :through 关联:here(第 2.4 节)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    相关资源
    最近更新 更多