控制器和视图之间的复选框标签绑定

时间:2012-10-21 04:41:28

标签: ruby-on-rails

我是RoR的新手。我面临的问题是,我有一些复选框,最初当我第一次运行我的应用程序时,我希望它们全部被选中,而我每次都希望它选中最后一个复选框。要做到这一点,在我的控制器中我有

 @all_ratings = Movie.all_ratings
 @selected_ratings = []
 if !params[:ratings].nil? 
   params[:ratings].each_key do |key|
     @selected_ratings << key
   end
 elsif
   @selected_ratings = @all_ratings
 end 

虽然我的模型看起来像

class Movie < ActiveRecord::Base
  def self.all_ratings
    @all_rating = ['G', 'PG', 'PG-13', 'R']
  end
end  

并且表单看起来像这样

Include: 
  - @all_ratings.each do |rating|
    = rating
    = check_box_tag "ratings[#{rating}]", 1, rating==@selected_ratings.each{|s_rating|}
  = submit_tag 'Refresh', :id => "ratings_submit"

现在我想在控制器中做的是,我想看看param是否为空,如果是,那么我想检查所有值,所以我创建一个实例变量@selected_ratinngs并传递所有评级值成。如果我从复选框中选择了一些值,那么我将这些值保存在selected_ratings中。

在视图中我打算使用selected_rating,并且在check_box_tag中想要将selected_rating与rating进行比较以查看它是否已经存在,否则checked参数为true。

在这样一个长篇描述之后,我想补充一点,这不符合计划任何想法。

1 个答案:

答案 0 :(得分:0)

包含?为我工作

= check_box_tag "ratings[#{rating}]", 1, (@selected_ratings.include? rating)