【发布时间】:2012-07-06 14:35:48
【问题描述】:
我有选择:
= f.select(:category_id, @categories, :html_options => {:class => 'select_box'}, {:disabled => true if category.id == 18})
上面这段代码明明是报错,但是如何根据id禁用一个选项呢?
【问题讨论】:
标签: ruby-on-rails select helper
我有选择:
= f.select(:category_id, @categories, :html_options => {:class => 'select_box'}, {:disabled => true if category.id == 18})
上面这段代码明明是报错,但是如何根据id禁用一个选项呢?
【问题讨论】:
标签: ruby-on-rails select helper
还没有测试过,但是在你的控制器中你不能这样做
@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}
%>
【讨论】: