使用自定义对象名称渲染异构集合

时间:2012-02-21 16:27:39

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 render

在我的Rails应用程序中,我有@events个从Event::Base < AR::Base模型继承的对象集合。

如果将其呈现为render :partial => 'event', :collection => @events,则可以提供选项:as => :event来更改与部分内部对象对应的局部变量的名称。但是当部分名称不恒定时该怎么办?上述方式(render @events, :as => :event)不起作用。

PS。在blog.obiefernandez.com 有一个解决方案,但它使用部分名称的最后一部分,这不适合我。

1 个答案:

答案 0 :(得分:3)

我自己没有尝试过验证,但这可能会有效:

class Event < ActiveRecord::Base

  def to_partial_path
    # assuming that you need different partials based on an attribute "variety"
    "events/#{variety}"
  end

end

您可能还需要使用:部分密钥,例如:render :partial => @events, :as => :event而不是render @events, :as => :event

编辑:这仅适用于Rails 3.2+ ...请参阅Obie's writeup on the topic