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

时间:2016-02-20 07:28:34

标签: ruby-on-rails associations model-associations

我正在尝试在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">]

“经理”部分是唯一正确的部分。如何让显示页面不在角色表中列出所有其他属性?

2 个答案:

答案 0 :(得分:0)

您有<%= @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| %>

答案 1 :(得分:0)

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

错误是使用&lt;% = @ profile.user.roles.each do | role | %GT; 请注意=您使用的

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