Ruby on rails 如何为rails中的has_many编写每个循环?

Ruby on rails 如何为rails中的has_many编写每个循环?,ruby-on-rails,Ruby On Rails,这位员工有很多技能 技能属于员工 技能表具有员工id(外键) 我想在视图中显示您可以使用: <table> <tr> <th>Employee </th> <th>Skills</th> </tr> <% @employees.each do |employee|%> <tr> <td><%= employee.name %

这位员工有很多技能 技能属于员工

技能表具有员工id(外键)

我想在视图中显示

您可以使用:

<table>
  <tr>
   <th>Employee </th>
   <th>Skills</th>
  </tr>
  <% @employees.each do |employee|%>
    <tr>
       <td><%= employee.name %></td>     
       <td><%= employee.skills.map(&:name).join(', ') %></td>     
    </tr>
   <% end %>
</table>

雇员
技能
上述代码将列出每位员工的所有技能名称。
您可以阅读完整的指南

您可以尝试以下内容。 在
控制器中
返回所有
员工
那就好像

@employees = Employee.all.includes(:skills)
视图中
可以执行以下操作

<% @employees.each do |employee| %>
  <tr>
     <td><%= employee.name %></td>
     <td><%= employee.skills.collect(&:title).join(", ") %></td>
  </tr>
<% end %>

获取用户集合有4种方法

  • @employees=Employee.all.joins(:skills)
  • @员工=员工。所有。包括(:技能)
  • @employees=Employee.all.eager\u load(:技能)
  • 在您的视图中,在HTML/HAML/SLIM文件中添加以下代码

    <% @employees.each do |employee| %>
       <tr>
        <td><%= employee.name %></td>
        <td><%= employee.skills.map(&:title).join(", ") %></td>
      </tr>
    <% end %>`
    
    
    `
    
    这种情况下的最佳实践是在
    员工
    类上编写实例方法:

    class Employee
    并在您的视图中这样使用它:

    
    
    您需要比这更具体。所以这里不是帮助您编写代码的地方,而是回答特定问题的地方。如果您不知道如何创建视图,请做一个基本的rails Totarial:您是在视图表中显示一名员工的多种技能,还是显示具有多种技能的多名员工?这家伙说。这应该是公认的答案。最好解释这三种方法之间的区别。当技能已经定义为关联时,您不需要加入这些技能。