0

我使用按钮组作为单选按钮来捕获数据库中布尔字段的用户输入。我有一个带有布尔字段的婚礼模型:rsvp。下面的表格似乎捕获了数据。但是,如果我刷新页面,则不再根据用户的选择切换按钮。我的问题是,即使页面被刷新,或者如果用户注销并再次登录,我如何让按钮保持用户的选择?

楷模

 class User < ActiveRecord::Base
  has_one :wedding
 end

 class Wedding < ActiveRecord::Base
  belongs_to :user
 end

控制器

 class WeddingsController < ApplicationController

   def new
     @wedding = Wedding.new
   end

   def create
     @wedding = current_user.build_wedding(params[:wedding])
      if @wedding.save
       redirect_to root_path
     else
       render 'new'
     end
   end

 class StaticPagesController < ApplicationController
   def home
    @wedding = Wedding.new
   end

看法:

主页.html.erb

  <%= form_for(@wedding, :remote => true) do |f| %>
     <div class="btn-group-wrap">
          <div class="btn-group" data-toggle="buttons-radio">
             <%= f.button 'Yes', :class => "btn btn-large btn", :value => "1", :name => "wedding[rsvp]" %>
              <%= f.button 'No', :class => "btn btn-large btn", :value => "0", :name => "wedding[rsvp]" %>
          </div>
     </div>
  <% end %>
4

2 回答 2

1

我应该建议您使用无线电输入,但隐藏圆圈(一些 css 可以解决问题)并在输入上添加引导程序类,以便您可以看到按钮。

查看其他帖子:如何使单选按钮看起来像切换按钮

于 2012-07-26T06:15:42.860 回答
0

这是我最终的做法(使用 Javascript)。不确定这是否是最好的方法。我为每个按钮添加了一个 ID 标签,然后使用 javascript 和一个取决于我的数据库中的值的条件来切​​换该按钮。

 <div class="btn-group" data-toggle="buttons-radio">         
        <%= f.button :rsvp, :id => "rsvp_true", :class => "btn btn-large btn", :value => "1", :name => "wedding[rsvp]" %>
        <%= f.button :rsvp, :id => "rsvp_false", :class => "btn btn-large btn", :value => "0", :name => "wedding[rsvp]" %>      
 </div>

 <script>
   $(document).ready(function() {
  <% if current_user.wedding.rsvp == true %>
    $('#rsvp_true').button('toggle');
  <% else %>
    $('#rsvp_false').button('toggle');
  <% end %>
   });
 </script>
于 2012-07-26T13:41:46.473 回答