索引控制器中对象的方法

时间:2013-12-06 16:30:16

标签: ruby-on-rails controller

这是一个非常简单的问题,但出于某种原因我无法找到解决方案。

我的控制器是:

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。 我该怎么办?

提前致谢!

2 个答案:

答案 0 :(得分: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或其他东西,但我会把它作为读者的练习。

答案 1 :(得分:0)

“我想在这里举办一些活动。”

查找单个记录的默认方式是id:

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

但对我来说,它应该是这样的,因为我没有在视图中看到@event