我最近决定users在Ruby On Rails应用程序中列出所有内容- 因为我无法弄清楚如何以其他方式列出它们,我决定使用partials.我的管理页面上有以下内容(只是连接到自己的管理控制器):
<%= render :partial => User.find(:all) %>
Run Code Online (Sandbox Code Playgroud)
然后_user.html.erb我在我的用户视图文件夹中调用了一个文件.这包含以下内容:
<ul>
<% div_for @user.object_id do %>
<li><%= link_to user.username, user.username %></li>
<% end %>
</ul>
Run Code Online (Sandbox Code Playgroud)
当应用程序运行并进入管理页面时,我收到以下错误:
未定义的方法`id'为4:Fixnum
它说这是因为这一行(在部分文件中):
<% div_for @user.object_id do %>
Run Code Online (Sandbox Code Playgroud)
我不确定为什么会发生这种情况(并且已经用Google搜索了几个小时才能找到结果并且只找到对我不起作用的解决方案).我认为这与我对@user实例变量的使用有关,但我不完全确定.
您会收到该错误,因为div_for需要将活动记录对象作为参数,并将其调用id方法.传入一个fixnum(结果@user.object_id),它不是一个活动的记录对象,也没有id方法.
所以传入@user而不是,@user.object_id它会工作.
你应该使用user而不是@user,rails 3不再为partials设置实例变量.