我有一个广告模型,其中有很多电话,电子邮件和信件。
目前,这些都是一个具有不同控制器和动作的独立模型(尽管我想在模型和动作稳定后开始考虑折叠它们的方法)。
他们至少共享两个属性::days和:title
我想要一种方法来表示属于特定Campaign的所有Calls,Emails和Letters作为可排序的集合(可按日期排序),以便为每个调用输出模型名称和path_to()。
例如(我知道下面的内容不正确,但它代表了我一直在努力做的输出/格式:
@campaign_events.each do |campaign_event|
<%= campaign_event.model_name %>
<%= link_to campaign_event.title, #{model_name}_path(campaign_event) %>
end
非常感谢。顺便说一句,如果这很重要,那么我想制作:days属性editable_in_place。
以下是我的工作,但需要一些额外的见解
module CampaignsHelper
def campaign_events
return (@campaign.calls + @campaign.emails + @campaign.letters).sort{|a,b| a.days <=> b.days}
end
end
在VIEW中:
<% @campaign_events = campaign_events %>
<% @campaign_events.each do |campaign_event| %>
<% model_name = campaign_event.class.name.tableize.singularize %>
<p>
<%= link_to campaign_event.title, send("#{model_name}_path", campaign_event) %>
<%= campaign_event.days %>
</p>
<% end %>
答案 0 :(得分:0)
喜欢这个吗?
# controller
@campaign = Campaign.find(params[:id])
@campaign_events = (@campaign.calls + @campaign.emails + @campaign.letters).sort{|a,b| a.days <=> b.days}
# view
@campaign_events.each do |campaign_event|
<%= campaign_event.model_name %>
<%= link_to campaign_event.title, #{model_name}_path(campaign_event) %>
end
在控制器中,您可以找到所有广告系列事件,并按days
字段