2013-01-11 88 views
0

删除空值,这是我的一种形式选择标签:的Rails:在选择标签

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

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

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

我们该怎么做。

在此先感谢

回答

1

您可以从

ModelName.all 

查询更改为

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

这将省去NULL""值。

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

@select_options = ModelName.where(... 

,然后在您的视图

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

您按理说应该连招collect进入行动了。

+0

条件工作完美。感谢您详细解释一切。 – Supersonic

+0

你打赌;乐意效劳。 – deefour

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'}) %> 
+0

这一个似乎也按预期工作。谢谢 – Supersonic