Ruby on Rails和Ajax - 在一个按钮中保存数据库中的数据

时间:2012-07-26 01:43:51

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

我使用按钮组作为单选按钮来捕获数据库中布尔字段的用户输入。我有一个布尔字段的婚礼模型: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

查看:

home.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 %>

2 个答案:

答案 0 :(得分:1)

我应该建议你使用无线电输入但是隐藏圆圈(有些css会做到这一点)并在输入上添加引导类,这样你就可以看到按钮了。

查看其他帖子:How to make a radio button look like a toggle button

答案 1 :(得分: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>