2011-12-22 68 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