【问题标题】:Heterogeneous Collection of Partials部分的异构集合
【发布时间】:2012-03-23 03:13:17
【问题描述】:

我正在努力寻找一种方法来获得一个异构的局部集合。我用它来列出名为@feed_items 的部分集合(在“Tweet”类中),它对一个类非常有用:

  <%= render :partial => 'shared/feed_item', :collection => @feed_items %>

@feed_promos 部分具有不同类(“促销”类)的对象,它们与 feed_item 部分位于相同的“共享”目录中。有谁知道集合中同时包含@feed_promo 和@feed_item 的代码?

我尝试使用 rails 3 快捷方式来简化:

  <%= render [feed_items, feed_promos] %>

但我收到一个错误,因为它希望找到 Tweet 模型的模板,但它不存在,我想要一个部分集合,而不是不同类的对象(如 Tweets)。我已经进入了relationship.rb 和tweet.rb 并包含了:

def to_partial_path 'shared/'

【问题讨论】:

    标签: ruby-on-rails class collections partials heterogeneous


    【解决方案1】:

    将你的部分分别放在tweets/_tweet.html.erbpromotions/_promotion.html.erb

    在您的控制器中创建一个集合:

    @feed = @feed_items + @feed_promos
    

    在你看来:

    <%= render @feed %>
    

    【讨论】:

    • 不幸的是它没有工作。 + 在控制器中未被识别,因此我将其更改为“&&”。是对的吗?另外,您是指部分名称的“_tweet.html.erb”而不是“_tweet.rb”吗?我尝试进行这些更改,但页面上仍然出现 ArgumentError:“nil”不是返回有效部分路径的 ActiveModel 兼容对象。
    • 对不起,扩展名有误,已编辑。 @feed_items@feed_promos 的类型是什么? + 运算符将两个数组合二为一。它在我的电脑上运行良好。 &amp;&amp; 是错误的:它是逻辑 AND 并返回 nil 或第二个操作数。您会收到错误消息,因为 @feednil 而不是 Array
    猜你喜欢
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多