2013-08-02 7 views
1

Я пытаюсь играть с соглашениями об именах Rails, как в here, и отображать две разные страницы с разными переменными, используя одну частичную.Оказание частичного использования определенных переменных контроллера

индекс

<%= render @events_future %> 

тока

<%= render @events_current %> 

Контроллер события

def index 
    @events_future = ... 
end 

_event.html.erb

<% @events.each do |event| %> 
... 
<% end %> 

Я получаю неопределенными «каждый» метод Пожалуйста, мне точку в правильном направлении

ответ

1

Я думаю, что лучше всего сделать здесь, чтобы пройти locals к частичной _event.html.erb, поскольку частные потребности для отображения различных объектов, таких как следующие:

индекс

<%= render 'event', events: @events_future %> 

тока

<%= render 'event', events: @events_current %> 

В приведенных выше двух операциях renderevents передается в event частично как локальный.

Тогда в вашем _event.html.erb вы могли бы сделать:

<% events.each do |event| %> 
... 
<% end %> 
+0

Я хотел бы привести Райана Бейтса здесь - «Да, это работает!» –

0

Вы должны передать переменную в частичное, когда вы предоставляете его:

render :partial => 'event', :locals => {:events => @events_current} %> 
render :partial => 'event', :locals => {:events => @events_future} %> 

И тогда в вашем парциальное вы делаете:

<% events.each do |event| %> 
... 
<% end %> 
+0

Да, вы правы. Виноват. – amb110395

+0

Хорошо, я удаляю свой комментарий: wink: – MrYoshiji

0

У вас есть @events, который был инициализирован в вашем контроллере?

Я вижу, что у вас есть @events_future и @events_current, но если @events не определен в контроллере, на ваш взгляд, не будет знать, что вы имеете в виду.

Если вы хотите использовать events как для будущего и тока, используйте следующее в каждом представлении

<!-- index.html.erb --> 
<%= render 'event', events: @events_future %> 

<!-- current.html.erb --> 
<%= render 'event', events: @events_current %> 

Это делает _event.html.erb частичных и устанавливает локальную переменную events. В _event.html.erb,

+0

Нет У меня нет инициализации @events, но все это работает (см. Ответ выше) –