我有以下三个表格:
blogs (id, name, description)
user_blogs (id, user_id, blog_id)
users (id, email, gender)
我正在遍历用户,我想显示他们所属的所有 user_blogs。在 View 中执行此操作的最佳做法是什么?我已经有了下面的代码。现在,我想添加一个显示基于 user_blogs 关联的 blogs.name 列表的列。
<% @users.each do |user| %>
<tr>
<td><%= user.id %></td>
<td><%= user.custom_id %></td>
<td><%= user.email %></td>
</tr>
<% end %>
最佳答案
我认为以下方法可行:
<% @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,并在您的 View 中使用以下内容。
<% @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 %>
关于ruby-on-rails - 在 View 中渲染 Rails 模型关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17116148/