Rails 4 - 显示关联属性(没有关联 table 中的所有属性)

Rails 4 - Displaying associated attribute (without all attributes in associated table)

我正在尝试在 Rails 4.

中制作一个应用程序

我有个人资料模型。

我正在尝试在该个人资料显示页面中显示用户的角色。

我有三个模型:

用户

 rolify (which has a user_role join table)

角色

has_and_belongs_to_many :users, :join_table => :users_roles
  belongs_to :resource, :polymorphic => true

简介

belongs_to :user

在我的个人资料显示页面中,我有:

<%= @profile.user.roles.each do |role|  %>
    <%= role.name.titlecase %> <span style= "margin-right: 30px"></span>
<% end %>

在显示视图中,我得到:

Manager [#<Role id: 9, name: "faculty_manager", resource_id: nil, resource_type: nil, created_at: "2016-01-16 08:06:55", updated_at: "2016-01-16 08:06:55">]

'Manager'部分是唯一正确的部分。如何让show page不列出角色的所有其他属性table?

您有 <%= @profile,而不仅仅是 <% @profile,它将枚举器的结果放在视图中

<% @profile.user.roles.each do |role|  %>
    <%= role.name.titlecase %> <span style= "margin-right: 30px"></span>
<% end %>

如果您只想为每个角色获取 name 则执行此操作

<% @profile.user.roles.pluck(:name).each do |role_name| %>

要以漂亮的 table 视图格式设置您的显示页面,请在您的显示页面代码中执行类似以下操作:

错误是使用 <%= @profile.user.roles.each do |role| %> 注意你使用的=

<table class="table ld-margin-top-20">
    <thead>
    <tr>
      <th>Manager ID</th>
      <th>Manger Name</th>
      <th>Manger Resource ID</th>
      <th>Manger Resource Type</th>
    </tr>
    </thead>
    <tbody>
    <% @profile.user.roles.each do |role| %>
        <tr>
          <td> <%= role.id %></td>
          <td> <%= role.name.titlecase %></td>
          <td><%= role.resource_id %></td>
          <td><%= role.resource_type %></td>
        </tr>
    <% end %>
    </tbody>
  </table>