我的应用程序有一个位置,每个位置可以根据分配给它的方向面具有多个日历。
现在,要过滤与日历对应的正确事件,我将其呈现在 位置显示视图
Location.html.erb
<%= render partial: @directional_faces %>
_directional_face.html.erb
<%= directional_face.name %>
<% @filtered_event_strips = directional_face.campaigns.event_strips_for_month(@shown_month, @first_day_of_week)%>
<%= raw(event_calendar) %>
这部分代码:
<% @filtered_event_strips = directional_face.campaigns.event_strips_for_month(@shown_month, @first_day_of_week)%>
允许显示多个日历的概念,然后仅根据显示的方向面显示属于该日历的广告系列。
如果可能的话,我想将其移动到控制器或帮助器中,与渲染的部分相对应。或者可以离开那里?
更多详情
calendar_helper.rb
def event_calendar_opts
{
:year => @year,
:month => @month,
:event_strips => @filtered_event_strips,
:month_name_text => I18n.localize(@shown_month, :format => "%B %Y"),
:previous_month_text => month_link(@shown_month.prev_month),
:next_month_text => month_link(@shown_month.next_month),
:first_day_of_week => @first_day_of_week,
}
end
地点控制器#show
def show
@month = (params[:month] || (Time.zone || Time).now.month).to_i
@year = (params[:year] || (Time.zone || Time).now.year).to_i
@shown_month = Date.civil(@year, @month)
@first_day_of_week = 1
end
答案 0 :(得分:0)
绝对把它放在控制器中。如果它是一个常见的东西(超过2个视图使用),我会把它放在DirectionalFace模型上,使它更容易。有点像
def filtered_event_strips(shown_month, first_day_of_week
self.campaigns.event_strips_for_month(shown_month, first_day_of_week)
end
另外,请注意您传递给视图的实例变量数量。你有3个线路。通常有一种更简单的方法可以将信息保存在控制器/模型中。另外,请确保在真正需要时只使用@。例如,@filtered_events_strips
不仅仅是filtered_event_strips
,在这种背景下也没有意义。