在控制器中访问子对象的id

时间:2011-12-22 13:40:04

标签: ruby-on-rails-3 controller params

我有一个模型用户,有很多物品(属于属于用户)。我有一个显示用户页面,显示用户的信息和所有他的所有物品的列表。我添加了一个链接,每个用户属于访问一个节目所属页面,此链接目前不起作用,因为我不知道如何访问所有者的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的新手,我一直在寻找如何解决这个问题几个小时......

非常感谢您的帮助!

1 个答案:

答案 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 而不是用户。