0

我正在使用 PublicActivity ruby​​ gem,并且收到此错误消息

这发生在里面/views/activities/_index.html.erb

<li>

  <% if activity.trackable_type == "Micropost" %>
     <%= link_to activity.owner.name, activity.owner if activity.owner %> posted
  <% else %>
   <%= link_to activity.owner.name, activity.owner if activity.owner %> made a comment on <%= link_to activity.recipient_id %>
  <% end %>

</li>

但是,当我包含这一行时,它工作正常

<li>
<% @activities.each do |activity| %>
  <% if activity.trackable_type == "Micropost" %>
     <%= link_to activity.owner.name, activity.owner if activity.owner %> posted
  <% else %>
   <%= link_to activity.owner.name, activity.owner if activity.owner %> made a comment on <%= link_to activity.recipient_id %>
  <% end %>
<% end %>
</li>

我在<% @activities.each do |activity| %>上面加了。它可以正常工作,但问题是,在视图中,活动在同一个列表中重复。

这是activities/_index.html.erb被调用的地方

我的views\shared\_feed.html.erb

  <%= render partial: 'activities/index', collection: @activities %>

我的活动控制器

class ActivitiesController < ApplicationController
  def index
    @activities = PublicActivity::Activity.order("created_at desc")
    @activity = PublicActivity::Activity.order("created_at desc")
  end

end
4

1 回答 1

0

将 render :partial 与集合一起使用可以使具有部分名称的变量可用。所以一种选择是;在您的部分,更改索引的活动,如:

<li>
  <% if index.trackable_type == "Micropost" %>

更好的是,将您的部分重命名为 _activity.html.erb,并且不要更改内部的任何内容。那会清楚得多。

于 2013-04-29T20:57:15.730 回答