Rails: неопределенная ошибка метода не может быть исправлена ​​с помощью attr_accessor - PullRequest
0 голосов
/ 18 июля 2011

Я создал очень простую модель под названием «Обсуждение», и один из столбцов - логическое значение «решено».Идея состоит в том, что после разрешения элемента обсуждения это значение устанавливается равным true.

В форме редактирования я попытался ввести некоторую логику, основанную на значении этого поля.

<%= 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 в мою модель, но и это ничего не сделало для меня.Я не уверен, что я должен сделать, чтобы это исправить.Я довольно плохо знаком с рельсами, так что я уверен, что, независимо от проблемы, ее, вероятно, довольно просто исправить, но я просто не понимаю.Спасибо.

Ответы [ 3 ]

3 голосов
/ 18 июля 2011

каждый логический столбец представлен как предикат, поэтому вы можете использовать:

if @discussion.resolved?
...
end
3 голосов
/ 18 июля 2011

Поскольку d представляет собой экземпляр построителя форм, вы хотите

<% if @discussion.resolved %>

Если разрешено, представляется как логическое значение в ActiveRecord.

1 голос
/ 18 июля 2011

То, что вы ищете, решено? метод.

<% if @discussion.resolved? %>

, который автоматически генерируется для логических столбцов.

...