0

这是我的表单选择标签:

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

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

因此,我希望 select 标记仅检索保留空值或 nil 值的有效条目。

我们该怎么做呢。

提前致谢

4

2 回答 2

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'}) %>
于 2013-01-11T06:28:45.677 回答
1

您可以更改您的查询

ModelName.all

ModelName.where("example_name <> ''")

这将省略 NULL""

注意将查询直接放在视图中是不好的做法;一般不需要它。该查询应在控制器操作的分配中使用。

@select_options = ModelName.where(...

然后在你看来

<%= f.select(:example_name, @select_options.collect { [...

可以说,您甚至也应该collect采取行动。

于 2013-01-11T06:28:56.137 回答