2011-12-22 72 views
1

我有一个模型用户,即has_many所有物(属于belongs_to用户)。我有一个显示用户页面,显示用户的信息和他所有物品的列表。我添加了一个链接到每个用户的所有者访问一个显示所有页面,这个链接目前不起作用,因为我不知道如何访问所有者的ID。在控制器中访问子对象的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 

==>:id始终指用户的ID。我曾尝试使用:user_id来访问用户,但后来我有一个“无法找到没有ID的用户”,如果我尝试访问使用belongs_id的所有物,我有“找不到没有ID的所有物”。

我知道这是基本的,但我是新来的Rails和我一直在寻找,了解如何解决这个问题了几个小时......

任何帮助,非常感谢!

回答

2

当您通过:collection选项将集合传递给部分时,部分将为集合中的每个成员插入一次。

<%= render :partial => "belonging", :collection => @belongings %> 

并给出您有_belonging.html.erb

当使用多元集合调用部分时,部分的单个实例可以访问正在通过部分后命名的变量呈现的集合成员。在这种情况下,部分属于_属于,属于_属于的部分,你可以引用属于来获取正在呈现的实例。

有了这个,既然你有属于变量可用,使用它来引用所有。在您的部分变更线:

<%= link_to "Show item", belonging_path %> 

<%= link_to "Show item", belonging_path(belonging.id) %> 

现在,belongings_controller.rbshow行动将收到ID的属于没有用户

+0

非常感谢Syed,你救了我的一天!我真的很感激你给出的全面解释,因为你可能已经注意到我有点迷茫和困惑! – citraL 2011-12-22 14:20:19

+0

@citraL不客气。很高兴我能帮上忙。 – 2011-12-22 17:15:48