2011-12-22 2 views
1

У меня есть модель User, которая имеет has_many вещи (принадлежность принадлежит пользователю). У меня есть страница пользователя для показа, которая показывает информацию пользователя и список всех его вещей. Я добавил ссылку на каждую принадлежащую пользователю доступ к странице, принадлежащей к показу, эта ссылка в настоящее время не работает, потому что я не знаю, как получить доступ к идентификатору принадлежности.Доступ к идентификатору дочернего объекта в контроллере

Оба пользователя и их принадлежность определяются как ресурсы, принадлежащие не к пользователю.

Вот кусок коды:

показать страницу пользователя содержит:

<% 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> 

Проблемы заключается в том, как получить доступ к принадлежащему идентификационному в принадлежащем х контроллер:

def show 
    @user = User.find(params[:id]) 
    @belonging = @user.belongings.find(params[:id]) 
    @title = @belonging.name 
    end 

==>: id всегда ссылается на идентификатор пользователя. Я попытался использовать: user_id для доступа к пользователю, но тогда у меня есть «не удается найти пользователя без 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) %> 

Теперь show действие belongings_controller.rb получит идентификатор из Принадлежность не Пользователя.

+0

Спасибо, Сайед, вы спасли мой день! Я действительно ценю полное объяснение, которое вы дали, поскольку вы, возможно, заметили, что я немного потерялся и смутился! – citraL

+0

@ citraL Добро пожаловать. Рад, что смог помочь. –