5

我最近决定要列出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>

当应用程序运行并转到管理页面时,我收到以下错误:

4:Fixnum 的未定义方法“id”

它说这是因为这一行(在部分文件中):

<% div_for @user.object_id do %>

我不确定为什么会发生这种情况(并且已经用谷歌搜索了几个小时试图找到结果并且只找到对我不起作用的解决方案)。我认为这与我对@user实例变量的使用有关,但我并不完全确定。

4

4 回答 4

8

您会收到该错误,因为div_for需要一个活动记录对象作为参数,它会调用该id方法。您传入一个 fixnum(的结果@user.object_id),它不是活动记录对象,也没有id方法。

所以通过@user而不是@user.object_id它会起作用。

您也应该使用user而不是@user,rails 3 不再为部分设置实例变量。

于 2011-02-09T21:17:39.993 回答
0

丢失 .object_id 部分。我真的想不出你为什么要使用 object_id!你这样做有充分的理由吗?无论如何 div_for 将一个 div 包裹在一个对象周围,所以留下 .object_id 部分!

于 2011-02-09T21:20:58.657 回答
0

而不是你正在使用的对象,你当时正在使用它的列或签证varsa,你会得到这种错误。

例子

我使用 id 而不是 user = User.first 对象。

于 2014-12-20T12:02:49.860 回答
0

试试这个,它对我有用。

@item.unit_of_measure.name 

代替

@item.unit_of_measure_id.name
于 2017-11-27T08:17:15.900 回答