我有一个模型用户,有很多物品(属于属于用户)。我有一个显示用户页面,显示用户的信息和所有他的所有物品的列表。我添加了一个链接,每个用户属于访问一个节目所属页面,此链接目前不起作用,因为我不知道如何访问所有者的ID。
用户和所有者都被定义为资源,属于不是用户的成员。
这是一段代码:
用户显示页面包含:
<% unless @user.belongings.empty? %>
<table class="belongings" summary="User's objects and services">
<%= render @belongings %>
</table>
<%= will_paginate @belongings %>
<% end %>
使用此部分:
<td class="belongings">
<span class="id"><strong>Object ID: </strong><%= belonging.id %></span><br/>
<span class="name"><strong>Name: </strong><%= belonging.name %></span><br/>
<p>
<span class="description"><strong>Description: </strong><%= belonging.description %></span>
</p>
<span class="price"><strong>Price per week: </strong><%= belonging.price %></span> <br/>
<span class="caution"><strong>Caution: </strong><%= belonging.caution %></span><br/>
<span class="timestamp">
Posted <%= time_ago_in_words(belonging.created_at) %> ago.
</span>
</td>
<td>
<%= link_to "Show item", belonging_path %>
</td>
</tr>
问题是如何在所属的控制器中访问所有者的ID:
def show
@user = User.find(params[:id])
@belonging = @user.belongings.find(params[:id])
@title = @belonging.name
end
==&GT; :id始终引用用户的ID。我已经尝试使用:user_id来访问用户,但后来我有一个“找不到没有id的用户”,如果我尝试使用:belongs_id访问所有物,我有“找不到没有id的所有物”.. < / p>
我知道这是基本的,但我是Rails的新手,我一直在寻找如何解决这个问题几个小时......
非常感谢您的帮助!
答案 0 :(得分:2)
当您通过:collection
选项将集合传递给部分时,将为集合中的每个成员插入一次部分。
<%= render :partial => "belonging", :collection => @belongings %>
并且给你_belonging.html.erb
。
当使用复数集合调用partial时,partial的各个实例可以访问通过以partial命名的变量呈现的集合的成员。在这种情况下,partial是_belonging,在_belonging partial中,你可以引用属于获取正在呈现的实例。
这样,由于您拥有可用的变量,因此可以使用它来引用所属。在您的部分更改行:
<%= link_to "Show item", belonging_path %>
到
<%= link_to "Show item", belonging_path(belonging.id) %>
现在,show
的{{1}}操作会收到属于的 ID 而不是用户。