2013-12-06 4 views
0

Это очень простой вопрос, но по какой-то причине я не могу найти решение.метод объекта в контроллере индекса

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

def index 
    @events = Event.all 
    #I want something here for a single event 
    distance = Time.now.to_date.distance_to(@event.event_date) 
    @days = distance[:days] 
    @months = distance[:months] 
    @years = distance[:years] 
end 

Тогда в представлении:

<table> 
    <tbody> 
    <% @events.each do |event| %> 
     <tr> 
     <td><%= event.title %></td> 
     <td><%= event.event_date %></td> 
     <td> Just <%= @days %> days, <%= @months %> months and <%= @years %> years for the event </td> 
     </tr> 
    <% end %> 
    </tbody> 
</table> 

Конечно, это не работает, потому что нет @event. Как я могу это сделать?

Заранее благодарен!

ответ

1

То, что вы хотите сделать, это добавить, что функциональность отдельных записей Я хотел бы добавить distance как метод на Event класса

так

class Event < ActiveRecord::Base 
    #... your model code here 

    def distance 
    Time.now.to_date.distance_to(self.event_date) 
    end 
end 

контроллер

def index 
    @events = Event.all 
end 

и на вид

<td> Just <%= event.distance[:days] %> days, <%= event.distance[:months] %> months and <%= event.distance[:years] %> years for the event </td> 

Вы можете добавить еще несколько методов в свою модель, чтобы сделать ее более красивой, как event.distance_days или что-то, но я оставлю это как упражнение для читателя.

0

«Я хочу что-то здесь для одного события».

По умолчанию это найти отдельные записи является идентификатором:

@event = Event.find(params[:id]) 

Но для меня, это должно работать так, потому что я не вижу @event под названием в представлении.

Смежные вопросы