Static_pages中的NameError#home,未定义的局部变量或方法`activity'

时间:2013-04-29 20:48:49

标签: ruby-on-rails ruby rubygems

我正在使用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

1 个答案:

答案 0 :(得分:0)

使用render:partial与集合创建一个变量,其中包含部分可用的名称。所以一个选择是;在您的部分,更改索引的活动,如:

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

更好的是,将您的部分重命名为_activity.html.erb,并且不要更改内部的任何内容。这将更加明确。