代码之家  ›  专栏  ›  技术社区  ›  colllin spam_eggs

呈现异类集合:如何为分区指定单个目录?

  •  2
  • colllin spam_eggs  · 技术社区  · 15 年前

    我有一个集合,@comments,它是异构的,但层次分明。每个注释要么是comment的实例,要么是一些派生类,如ActionComment或InactionComment。我正在为每种类型的评论呈现不同的部分。视图代码为:

    = render @comments

    由于所有部分都是相关的,所以我希望将它们保存在一个视图目录中,即:

    • 应用程序/视图/评论/操作评论.haml
    • 应用程序/视图/评论/不活动评论.haml

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

    • 应用程序/视图/评论/评论.haml
    • 应用程序/视图/操作评论/操作评论.haml
    2 回复  |  直到 15 年前
        1
  •  4
  •   telent    14 年前

    Rails 3.2提供了一个Model#to#u partial_path方法,它允许您(顾名思义)重写部分路径名。

      def to_partial_path
        self.action.to_s
      end
    

    它返回的路径不包含前导下划线,并且假定是相对于 .../views/modelname/ http://blog.plataformatec.com.br/2012/01/my-five-favorite-hidden-features-in-rails-3-2/ 总览

        2
  •  1
  •   Nader    15 年前

    你不能这么神奇地完成它,但是你可以通过单独渲染每一项并指定部分来完成。

    haml中的示例:

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