这是我对表单的选择标记:
<%= f.select(:example_name, ModelName.all.collect {|p| [ p.example_name, p.example_name ] }, {:include_blank => 'Select Example'}) %>
这将返回模型ModelName的所有example_name。但是模型的空值存储在数据库中。
因此,我希望select标记只检索留下空值或零值的有效条目。
我们如何做到这一点。
提前致谢
答案 0 :(得分:1)
试
<%= f.select(:example_name, ModelName.where("example_name IS NOT NULL && example_name != ''").collect {|p| [ p.example_name, p.example_name ] }, {:include_blank => 'Select Example'}) %>
答案 1 :(得分:1)
您可以从
更改查询ModelName.all
到
ModelName.where("example_name <> ''")
这将省略 NULL
和""
值。
注意将查询直接放在视图中是不好的做法;通常没有必要。该查询应该用在控制器操作中的赋值中。
@select_options = ModelName.where(...
然后在你的视图中
<%= f.select(:example_name, @select_options.collect { [...
你甚至可以将collect
移动到行动中。