Rails:未定义的方法错误无法通过attr_accessor修复

时间:2011-07-18 16:33:04

标签: ruby-on-rails undefined attr

我创建了一个名为Discussion的非常简单的模型,其中一列是一个名为resolved的布尔值。这个想法是,一旦讨论项目被解决,该值就被设置为真。

在编辑表单上,我尝试根据该字段的值输入一些逻辑。

<%= form_for(@discussion) do |d| %>
    ...
<% if d.resolved == "true" %>
    <p>The discussion is resolved</p>
<% else %>
    <p>The discussion is not resolved</p>
<% end %>
<% end %>

但是,我收到了错误消息

undefined method `resolved' for #<ActionView::Helpers::FormBuilder:0x00000101674678>

我尝试在我的模型中添加一个attr_accessor行,但对我来说也没有做任何事情。我不确定我要做些什么来解决这个问题。我对rails非常陌生,所以我确定无论问题是什么,修复起来都很简单,但我还是不明白。感谢。

3 个答案:

答案 0 :(得分:3)

因为d代表表单构建器的实例,所以需要

<% if @discussion.resolved %>

如果在ActiveRecord中将resolve表示为“boolean”。

答案 1 :(得分:3)

每个布尔列都表示为谓词,因此您可以使用:

if @discussion.resolved?
...
end

答案 2 :(得分:1)

你要找的是解决了什么?方法。

<% if @discussion.resolved? %>

是为布尔列自动生成的。