Rails:删除select标记中的空值

时间:2013-01-11 06:26:02

标签: ruby-on-rails ruby-on-rails-3

这是我对表单的选择标记:

<%= f.select(:example_name, ModelName.all.collect {|p| [ p.example_name, p.example_name ] }, {:include_blank => 'Select Example'}) %>

这将返回模型ModelName的所有example_name。但是模型的空值存储在数据库中。

因此,我希望select标记只检索留下空值或零值的有效条目。

我们如何做到这一点。

提前致谢

2 个答案:

答案 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移动到行动中。