3

我在下面有三个表:

blogs (id, name, description)

user_blogs (id, user_id, blog_id)

users (id, email, gender)

我正在遍历用户,我想显示他们所属的所有 user_blogs。在视图中执行此操作的最佳做​​法是什么?我已经有下面的代码工作。现在,我想添加一个基于 user_blogs 关联显示 blogs.name 列表的列。

  <% @users.each do |user| %>
    <tr>
      <td><%= user.id %></td>
      <td><%= user.custom_id %></td>
      <td><%= user.email %></td>
    </tr>
  <% end %>
4

2 回答 2

0

我认为以下方法会起作用:

  <% @users.each do |user| %>
    <tr>
    <td><%= user.id %></td>
    <td><%= user.custom_id %></td>
    <td><%= user.email %></td>
    <td>
      <ul>
        <% user.user_blogs.blog.each do |blog| %>
          <li><%= blog.name %></li>
        <% end %>
      </ul>
    </td>
    </tr>
  <$ end %>

但是(假设您的关联设置正确),如果您在 User 类中输入以下内容:

has_many :user_blogs
has_many :blogs, through: :user_blogs

您可以摆脱 user_blogs,并在您的视图中使用以下内容。

  <% @users.each do |user| %>
    <tr>
    <td><%= user.id %></td>
    <td><%= user.custom_id %></td>
    <td><%= user.email %></td>
    <td>
      <ul>
        <% user.blogs.each do |blog| %>
          <li><%= blog.name %></li>
        <% end %>
      </ul>
    </td>
    </tr>
  <$ end %>
于 2013-06-14T20:10:26.443 回答
0

我相信您的模型应该如下所示,您可能不同意我的观点。但据我了解,一个User可以有很多Blogs,一个博客可以属于一个用户

  class Blogs < ActiveRecord::Base
     belongs_to :user 
     attr_accessible :id, :name, :description
    end 

    class User < ActiveRecord::Base

      attr_accessible :id, :email, :gender
      has_many :blogs
    end 

然后我相信基于你提到的:

我想显示他们所属的所有 user_blogs

您可以在视图中执行以下操作:

 <% @users.each do |patient| %>
    <tr>
    <td><%= user.id %></td>
    <td><%= user.custom_id %></td>
    <td><%= user.email %></td>
    <td>
      <ul>
        <% user.blogs.each do |blog| %>
          <li><%= blog.name %></li>
        <% end %>
      </ul>
    </td>
    </tr>
  <% end %>
于 2013-06-14T20:12:10.680 回答