如何在rails中创建嵌套表

时间:2016-04-06 19:56:57

标签: ruby-on-rails

我想创建一个名为 groups 的表,列出每个组的列表。在每个组的内部,我想列出课程组。小组has_many :courses和课程belongs_to :group。我目前的尝试不起作用,我不知道从那里去哪里

当前尝试

courses_controller.rb

  def index
    @courses = Course.find_by(group: :group_id)
    @groups = Group.all
  end

index.html.erb

<table>
  <thead>
    <tr>
      <th>Title</th>
      <th colspan="3"></th>
    </tr>
  </thead>

  <tbody>
    <% @groups.each do |group| %>
      <tr>
        <td><%= group.title %></td>
        <td><%= link_to 'Show', group %></td>
        <td><%= link_to 'Edit', edit_group_path(group) %></td>
        <td><%= link_to 'Destroy', group, method: :delete, data: { confirm: 'Are you sure?' } %></td>
      </tr>
      <tr>
        <td>
        <table>
  <thead>
    <tr>
      <th>Title</th>
    </tr>
  </thead>

  <tbody>
    <% @courses.each do |course| %>
      <tr>
      <% if Lesson.exists?(user: current_user, course: course) %>
        <td><%= link_to course.title, edit_lesson_path(Lesson.find_by(user: current_user, course: course)) %></td>
        <% else %>
        <td><%= link_to course.title, new_course_lesson_path(course) %></td>
        <% end %>
        <% if current_user.master? %>
        <td><%= link_to 'Edit', edit_course_path(course) %></td>
        <td><%= link_to 'Destroy', course, method: :delete, data: { confirm: 'Are you sure?' } %></td>
        <% else %>
        <% end %>
      </tr>
    <% end %>
  </tbody>
</table>

<br>
<% if current_user.master? %>
<%= link_to 'New Course', new_course_path %>
<% end %></td>
      </tr>
    <% end %>
  </tbody>
</table>

感谢任何帮助:)

更新

:group_id是每个已创建课程的组ID,因为小组has_many :courses课程belongs_to :course,但这并不重要,因为我只想要桌子,谢谢XP

1 个答案:

答案 0 :(得分:0)

正如我在评论中所说,你的意思是什么不起作用?你收到任何错误信息吗?你是如何构建模型的?您是否已创建迁移以向课程添加组ID?你的路线文件是什么样的 - 是否在群组下嵌套?如果您不提供此类信息,则很难提供帮助。

如果您查看日志,您会收到一些消息,这些消息会指示您出现问题。你试过跑吗

Course.find_by(group: :group_id)

在rails控制台中。我怀疑你会发现这条线路造成了问题。注释掉这一行并修改你的erb如下(我没有包括所有的代码,但只是为了给你一个想法)。在表格中使用表也不是一个好主意。

<table>
  <thead>
    <tr>
      <th>Title</th>
      <th colspan="3"></th>
    </tr>
 </thead>

 <tbody>
    <% @groups.each do |group| %>
      <tr>
        <td><%= group.title %></td>
      </tr>
      <tr>
        <td>
          <table>
            <thead>
              <tr>
                <th>Title</th>
              </tr>
            </thead>

            <tbody>
              <% @group.courses.each do |course| %>
                <tr>
                  <% if Lesson.exists?(user: current_user, course: course) %>
                    <td><%= link_to course.title, edit_lesson_path(Lesson.find_by(user: current_user, course: course)) %></td>
                  <% else %>
                    <td><%= link_to course.title, new_course_lesson_path(course) %></td>
                  <% end %>