Хеш модели, отображаемый, когда не требуется - PullRequest
0 голосов
/ 04 сентября 2018

Я работаю над приложением регистрации для презентаций в Ruby on Rails. Таким образом, я создал несколько моделей, в том числе модель студента и администратора. Я отображаю данные этих моделей в виде таблицы с начальной загрузкой:

<table class="table">
  <thead>
    <tr>
      <th scope="col">First name</th>
      # ...
    </tr>
  </thead>
  <tbody>
  <%= @student.each do |stud| %>
    <tr>
      <td scope="row"><%= stud.Firstname %></td>
      # ...
    </tr>
  <% end %>
</tbody>

Мой контроллер:

def list
  @student = Student.all.order(:Firstname)
end

Проблема в том, что приложение печатает список всех объектов в базе данных в виде хэша.

#<Presentation id: 3, Name: "Elon Musk", Year: "6 Gc", Title: "Electric Cars", Subject: "Phsics", Mentor: "Alberto Maraffio", Room: "N364", From: "13:45", Until: "14:00", Date: "07.11.18", Free: 5, Occupied: 0, Visitors: nil, created_at: "...", updated_at: "...">, #<Presentation id: 3, # ...

Этого нет в файле layouts / application.html.erb. Единственный способ избавиться от него - это закомментировать <%= yield %>, что, конечно же, скрывает и остальную часть страницы. Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Эта строка

<%= @student.each do |stud| %>

не должно выводиться на страницу. Перейти к

<% @student.each do |stud| %>

Кроме того, я не могу понять, что вы хотите сделать с этой строкой

@student.each = Student.all.order(:Firstname)

Вероятно, должно быть

@student = Student.order(:Firstname)

И обратите внимание, что @students может быть лучшим именем для этой переменной

0 голосов
/ 04 сентября 2018
def list
  @student.each = Student.all.order(:Firstname)
end

Это выглядит странно для меня!

Это должно быть что-то вроде:

def list
  @students = Student.order(:Firstname)
end

Тогда ваш HTML также должен выглядеть так:

<table class="table">
  <thead>
    <tr>
      <th scope="col">First name</th>
      # ...
    </tr>
  </thead>
  <tbody>
  <% @students.each do |stud| %>
    <tr>
      <td scope="row"><%= stud.Firstname %></td>
      # ...
    </tr>
  <% end %>
</tbody>
...