在视图中呈现Rails模型关联

3

下面有三个表:

blogs (id, name, description)

user_blogs (id, user_id, blog_id)

users (id, email, gender)

我正在遍历用户,想展示他们所属的所有用户博客。在视图中,最佳实践是什么?我已经有了下面这段代码,现在我想添加一列,根据用户博客关联来显示 blogs.name 列表。

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

你的模型中已经设置了关联吗?如果是的话,能否分享一下它们? - Jay Truluck
用户 has_many:user_blogsUser_Blogs belongs_to:用户 belongs_to:博客博客: has_many:user_blogs - user2266813
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 %>

然而(假设您已经正确设置了关联),如果您在用户类中输入以下内容:

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

刚刚注意到他的示例代码中有些问题。不太确定 patient 是否在他的代码块中被使用了? - Deej
2
可能是那些查找/替换之一,以不显示他的应用程序代码为目的,但却出现了失误。我也有过这样的经历。=) - jake

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 

那么根据您所提到的,我相信:

我想要显示他们所属的所有用户博客

您可以在视图中尝试以下操作:

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

是的,我刚看到那是一个打字错误。 - Deej

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接