我是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。
在这样一个长篇描述之后,我想补充一点,这不符合计划任何想法。
答案 0 :(得分:0)
包含?为我工作
= check_box_tag "ratings[#{rating}]", 1, (@selected_ratings.include? rating)