Rails – 在select中禁用选项(根据条件)

我选择了:

= f.select(:category_id, @categories, :html_options => {:class => 'select_box'}, {:disabled => true if category.id == 18}) 

上面的代码显然会返回错误,但是如何根据id禁用选项?

没有测试过这个,但是在你的控制器中你不能这样做

 @checkvar = @category.id == 18 ? true : false 

然后在视图中

 f.select(:category_id, @categories, :html_options => {:class => 'select_box'}, {:disabled => @checkvar}) 

或者在模型中编写一个函数进行测试

 def disable_select if self.id == 18 true else false end end 

然后在视图中

 f.select(:category_id, @categories, :html_options => {:class => 'select_box'}, {:disabled => @category.disable_select}) 
 <%= f.select :status, STATUSES.map{|s| [s.titleize, s]}, { disabled: DISABLED_STATUSES.map{|s| [s.titleize, s]} %> 

最近进入这个并使用以下解决方案:

 #view = f.select(:category_id, @filtered_categories, :html_options => {:class => 'select_box'} #controller @filtered_categories = Category.all.select do |category| [logic here] end 

对于select_tag ,我们可以这样做:

 <%= select_tag "sample", options_for_select( [['A', 'a'], ['B', 'b'], ['C', 'c']]), {class: 'form-control', disabled: data.present? == false ? true : false} %>