2

Я новичок в Rails. Я использую Rails 3.2.13. Я постараюсь скрыть свой вопрос:визуализировать ответ ActiveRecord от контроллера до View

В моем контроллере я хочу получить последние 10 записей из таблицы наблюдений. У меня есть:

def index 
    @times = Observation.select(:load_time).last(10) 
end 

В этой точке зрения, я пытаюсь визуализировать 10 записей в @times так:

<% @times.each do |time| %> 
<p>time: <%= time %></p> 
<% end %> 

А ответ я получаю в моей веб-страницы выглядит следующим образом:

time: #<Observation:0x007fe22bf2a138> 

Мне интересно, как получить фактическую переменную времени как float, а не (что-то похожее) на адрес памяти. Похоже, что последние 10 записей правильно превращают его в контроллер, который хорош.

В моем наблюдении нет логики < ActiveRecord :: Базовый класс, потому что миграция отвечает за определение схемы. Вот что мой дб/мигрировать/create_observations.rb выглядит следующим образом:

class CreateObservations < ActiveRecord::Migration 
    def change 
    create_table :observations do |t| 
     t.float :load_time 
     t.timestamps   
    end 

Заранее спасибо за любую помощь - это высоко ценится.

ответ

2

Вы просто должны получить доступ к переменной внутри объекта

<%= time.your_field %> 

в вашем случае:

<%= time.load_time %> 
+1

'Наблюдение # load_time' столбец с плавающей точкой, а не дата. – DMKE

+0

правый ... мой плохой – juanpastas

+0

все. Спасибо – Henry

1

На ваш взгляд, <%= time => переводит _buf << time.to_s (где _buf является внутренний буфер вывода Эрба). Легко Обойти это определить Observation#to_s, например, так:

class Observation < ActiveRecord::Base 
    def to_s 
    load_time.to_s 
    end 
end 

Имейте в виду, что Observation.select(:id).map(&:to_s) Теперь вызовет ActiveModel::MissingAttributeError ошибку (так как to_s требует этот столбец присутствовать).

В общем, я бы adwise явно получить результат, что нужно, то есть в вашем случае:

<% @times.each do |time| %> 
    <p>time: <%= time.load_time %></p> 
<% end %> 
Смежные вопросы