Как визуализировать массив в Rails - PullRequest
0 голосов
/ 14 февраля 2019

В моем Rails-приложении у меня есть класс Bar и контроллер FooController.

class Bar
   attr_accessor :id
end

class FooController < ApplicationController
   def index
      @rows = {}
      bar = Bar.new
      bar.id = 1
      @rows[0] = bar

      render "index"
   end
end

В представлении я хотел бы сделать так:

<table>
<% @rows.each do |bar| %>
  <tr>
    <td><%= bar.id %></td>
  </tr>
<% end %>  
</table>

Но он выдаст ошибку

undefined method `id' for [0, #<Bar:0x00007fc65db33320 @id=1>]:Array

Если я отобразлю так:

<%= @rows %>

необработанные данные массива @rows будут отображаться как:

{0=>#<Bar:0x00007fc65db33320 @id="1">}

Как визуализировать элементы один за другим?

1 Ответ

0 голосов
/ 14 февраля 2019

Проблема в том, что @rows = {} назначает не массив, а хеш.И поэтому @rows[0] = bar не сохраняет bar в качестве первого элемента в массиве, но хранит bar под ключом в хэше.

Просто измените метод контроллера на:

def index
  @rows = []

  bar = Bar.new
  bar.id = 1

  @rows << bar

  render "index"
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...