未定义的方法`存在'为:符号:符号
问题描述:
我有一个表Program
与字段calle Symbol
。未定义的方法`存在'为:符号:符号
我想检索所有程序,它们都在Symbol中有一个值。含义不是一个空字符串,而不是零。
如何使用ActiveRecord构建这样的查询?
这里是我的代码:
<div class="control-group">
<%= f.label :program %>
<div class="controls">
<%= f.select :program_id, Program.where(:symbol.exists => true).collect {|c| [c.name + " " + c.symbol, c.id]}, {}, :class => 'chzn-select' %>
</div>
</div>
我收到此错误信息:
未定义的方法'存在的:符号:符号
有什么建议?
答
而不是使用下面的语法:
Program.where(:symbol.exists => true)
以下语法用于搜索记录,其中的符号不为零:
Program.where("symbol is not null")
答
你的情况应该是这样的
Program.where("symbol IS NOT NULL AND symbol != ''")
答
简单放,你不能直接调用你的finder方法中的符号。由于语法,它现在正在调用Symbol类的:symbol
符号上的#exist
方法。
我对ActiveRecord queries内存是有点不好,但你总是把一个简单的字符串条件像
@programs = Program.where("symbol <> ''")
它说符号不为空,而不是一个空字符串无论是。
(这正好在你的控制器,然后你就可以使用控制器实例变量@programs
在你看来你的选择输入。)
您正在使用控制器代码中的视图;您应该将该代码移动到您的控制器。 – 2013-02-27 13:34:09