我有三张桌子:
blogs (id, name, description)
user_blogs (id, user_id, blog_id)
users (id, email, gender)
我正在遍历用户,我想显示他们所属的所有user_blog。在视图中执行此操作的最佳做法是什么?我已经有下面的代码了。现在,我想添加一个列,该列将显示基于user_blogs关联的blogs.name列表。
<% @users.each do |user| %>
<tr>
<td><%= user.id %></td>
<td><%= user.custom_id %></td>
<td><%= user.email %></td>
</tr>
<% end %>
答案 0 :(得分: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 %>
答案 1 :(得分: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_blog
您可以在视图中执行以下操作:
<% @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 %>