Ruby On Rails - "неопределенный метод" id "для 4: Fixnum" - PullRequest
5 голосов
/ 10 февраля 2011

Я недавно решил, что хочу перечислить все users в своем приложении Ruby On Rails - поскольку я не мог понять, как их перечислить каким-либо другим способом, я решил использовать партиалы.У меня на странице администрирования есть следующее (только что подключенный к собственному контроллеру администрирования):

<%= render :partial => User.find(:all) %>

У меня в папке просмотра пользователей есть файл _user.html.erb.Это содержит следующее:

<ul>
<% div_for @user.object_id do %>
    <li><%= link_to user.username, user.username %></li>
<% end %>
</ul>

Когда приложение запускается и я перехожу на страницу администрирования, я получаю следующую ошибку:

неопределенный метод "id" для 4: Fixnum

Он говорит, что это из-за этой строки (которая находится в частичном файле):

<% div_for @user.object_id do %>

Я не уверен, почему это происходит (и гуглил в течение нескольких часов, чтобы попытатьсянайти результаты и найти только решения, которые не работают для меня).Я думаю, что это связано с моим использованием переменной экземпляра @user, но я не совсем уверен.

Ответы [ 4 ]

8 голосов
/ 10 февраля 2011

Вы получаете эту ошибку, потому что div_for ожидает объект активной записи в качестве аргумента, который вызывает метод id. Вы передаете fixnum (результат @user.object_id), который не является активным объектом записи и не имеет метода id.

Так что передайте @user вместо @user.object_id, и оно будет работать.

Также вы должны использовать user вместо @user, rails 3 больше не устанавливает переменные экземпляра для партиалов.

0 голосов
/ 27 ноября 2017

Попробуйте, у меня это сработало.

@item.unit_of_measure.name 

вместо

@item.unit_of_measure_id.name
0 голосов
/ 20 декабря 2014

вместо объекта, который вы используете, это столбец или Visa Varsa, которые вы используете в то время, вы получите этот тип ошибки.

* ** 1003 тысяча два * Пример

Я использую идентификатор вместо user = User.first object.

0 голосов
/ 10 февраля 2011

Потерять часть .object_id.Я серьезно не могу понять, почему вы используете object_id! У вас есть веская причина для этого?В любом случае div_for оборачивает div вокруг объекта, поэтому оставьте часть .object_id!

...