2010-11-10 14 views
2

我有一个集合,@comments,它是异构的,但层次分明。每个注释都是注释的实例或某个派生类,如ActionComment或InactionComment。我为每种评论提供了不同的部分。视图代码是:呈现异构集合:如何为分部指定单个目录?

= render @comments

由于所有的谐音是相关的,我想,让他们在一个单一的视图目录,即:

  • 应用程序/意见/评论/ _comment.haml
  • 应用程序/意见/评论/ _action_comment.haml
  • 应用程序/意见/评论/ _inaction_comment.haml

但现在为了使用正确的部分自动渲染,我使用单独的目录,如:

  • 应用程序/意见/评论/ _comment.haml
  • 应用程序/视图/ action_comments/_action_comment。 HAML
  • 应用程序/视图/ inaction_comments/_inaction_comment.haml

回答

1

你不能做到这一点很神奇地作为,但你可以通过只分别渲染每个项目,并指定部分做到这一点。

例如在HAML:

- @comments.each do |c| 
    = render :partial => "comments/#{c.class.to_s.underscore}", :locals => {:comment => c} 
+0

此答案适用于Rails <3.2。我正在改变我接受的答案,使其与当前版本的Rails保持同步。 – colllin 2012-04-18 02:20:47

相关问题