Доступ к идентификатору дочернего объекта в контроллере - PullRequest
1 голос
/ 22 декабря 2011

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

И пользователь, и принадлежность определены какресурсы, принадлежащие не являющиеся членами пользователя.

Вот фрагмент кода:

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

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

==>: идентификатор всегда ссылается на идентификатор пользователя.Я попытался использовать: user_id для доступа к пользователю, но затем у меня есть «не могу найти пользователя без идентификатора», и если я пытаюсь получить доступ к принадлежности с помощью :ding_id, я «не могу найти принадлежность без идентификатора» ..

Я знаю, что это основное, но я новичок в Rails, и я искал, как решить эту проблему часами ...

Большое спасибо за любую помощь!

1 Ответ

2 голосов
/ 22 декабря 2011

Когда вы передаете коллекцию в частичное с помощью опции :collection, частичное будет вставлено один раз для каждого члена в коллекции.

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

и учитывая, что у вас есть _belonging.html.erb.

Когда частичное вызывается с множественной коллекцией, то отдельные экземпляры частичного имеют доступ к члену коллекции, отображаемой через переменную, названную в честь частичного. В этом случае частичным является _belonging, а в пределах _belonging частичного вы можете сослаться на принадлежность, чтобы получить экземпляр, который визуализируется.

При этом, поскольку у вас есть доступная переменная, используйте ее для ссылки на принадлежность. В вашем частичном изменении строка:

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

до

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

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

...