以与原始视图不同的视图显示表

时间:2018-10-04 14:15:08

标签: ruby-on-rails model-view-controller

如何在计划视图中显示员工不可用表?

在为员工创建时间表时,我希望在时间表模型视图中看到我的员工不可用表。

<div class="col-lg-6 col-sm-12 right">
      <% @non_availabilities = NonAvailability.all %>
      <table class="table table-striped table-bordered table-hover">
        <thead>
        <tr>
          <th class="col-md-2">Employee</th>
          <th class="col-md-2">Date</th>
          <th class="col-md-2">Time</th>
          <th class="col-md-2">Reason</th>
        </tr>
        </thead>
      <tbody>
      <% @non_availabilities.each do |non_availability| %>
        <tr>
        <td class="col-md-2"><%= non_availability.employee.full_name %></td>
        <td class="col-md-2"><%= non_availability.date %></td>
        <td class="col-md-2"><%= non_availability.time %></td>
        <td class="col-md-2"><%= non_availability.reason %></td></tr>
      <% end %>
        </tbody>
        </table>
    </div>

3 个答案:

答案 0 :(得分:1)

假设您的雇员表是一个名为Employee的模型,而您的日程安排表是一个名为Schedule的模型。

如果您想在schedules的展示视图(或其他任何视图,例如索引)中列出所有员工,则可以使用以下方法:

class SchedulesController < ApplicationController

  def show
    @employees = Employee.all
  end

end

在“ Employee.rb”(模型)中:belongs_to :schedule

在“ Schedule.rb”(模型)中:has_many :employees

在您的shedules show.html.erb中:

<% @employees.each do |employee| %>
  <p><%= employee.name %></p>
  <p><%= employee.position %></p>
<% end %>

答案 1 :(得分:1)

这是对我的问题的非常简单的答案。要在其他模型视图上显示模型表,我需要做的只是以下事情。

<% @employees.each do |employee| %>
  <%= employee.name %>
  <%= employee.position %>
<% end %>

答案 2 :(得分:0)

@Jake的回答是正确的,只是一个警告。

让我们假设您将时间表定义为两周的花名册,因此关系将变成多对多(而不是belongs_to),并且您将需要一个联接表。

在“ Schedule.rb”(模型)中:has_and_belongs_to_many :employes 在“ Employee.rb”(模型)中:has_and_belongs_to_many :schedules

上周我遇到了类似的问题,此答案很有帮助: Creating a many to many relationship in Rails