Ruby on rails 使用自定义对象名称呈现异构集合

Ruby on rails 使用自定义对象名称呈现异构集合,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.1,render,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.1,Render,在我的Rails应用程序中,我有一个继承自Event::Base'event',:collection=>@events那样呈现它,则可以提供一个选项:as=>:event,以更改局部变量的名称,该局部变量对应于partial中的对象。但是,当分部的名称不是常量时,该怎么办?上述方法(render@events,:as=>:event)不起作用 另外,在上有一个解决方案,但它使用了部分名称的最后一部分,这不适合我。我自己没有尝试过验证,但这可能会起作用: class Event < Act

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

如果像
render:partial=>'event',:collection=>@events
那样呈现它,则可以提供一个选项
:as=>:event
,以更改局部变量的名称,该局部变量对应于partial中的对象。但是,当分部的名称不是常量时,该怎么办?上述方法(
render@events,:as=>:event
)不起作用


另外,在上有一个解决方案,但它使用了部分名称的最后一部分,这不适合我。

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

class Event < ActiveRecord::Base

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

end
class事件
您可能还需要使用:partial键,例如:
render:partial=>@events,:as=>:event
而不是
render@events,:as=>:event


编辑:这只适用于Rails 3.2+。。。请参阅。

我自己还没有尝试验证这一点,但这可能有效:

class Event < ActiveRecord::Base

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

end
class事件
您可能还需要使用:partial键,例如:
render:partial=>@events,:as=>:event
而不是
render@events,:as=>:event


编辑:这只适用于Rails 3.2+。。。请参阅。

渲染部分:@events,因为::event
确实有效!谢谢将集合作为部分传递是如此违反直觉,我一直认为它只能是文件名。
render partial:@events,as::event
确实有效!谢谢将集合作为部分传递是非常违反直觉的,我一直认为它只能是文件名。