Ruby on rails 将两个部分渲染为一个(rails 3),我这样做对吗?

Ruby on rails 将两个部分渲染为一个(rails 3),我这样做对吗?,ruby-on-rails,ruby,ruby-on-rails-3,rubygems,Ruby On Rails,Ruby,Ruby On Rails 3,Rubygems,我正在使用Public_Activity gem来显示网站上正在执行的操作列表。我已经在主页上有了一个主要的feed,但我也想包括所有正在使用gem跟踪的活动 下面是我试图在控制器内部执行的操作 class StaticPagesController < ApplicationController def home if signed_in? @micropost = current_user.microposts.build @feed_activit

我正在使用Public_Activity gem来显示网站上正在执行的操作列表。我已经在主页上有了一个主要的feed,但我也想包括所有正在使用gem跟踪的活动

下面是我试图在控制器内部执行的操作

class StaticPagesController < ApplicationController
  def home
    if signed_in?
      @micropost = current_user.microposts.build
      @feed_activities = PublicActivity::Activity.order("created_at desc")
      @feed_posts = current_user.feed.without_review.paginate(page: params[:page])
      @feed_items = @feed_posts + @feed_activities 
    end
  end
class StaticPagesController
那么在我看来,这就是我想说的

<% if @feed_items.any? %>
  <ol class="microposts">
    <%= render partial: 'shared/feed_item', collection: @feed_items %>
  </ol>
  <%= will_paginate @feed_items %>
<% end %>

上面调用的_feed_item.html是

<li id="<%= feed_item.id %>">
<br>

  <% if @feed_activities? %>
  <%= link_to activity.owner.name, activity.owner if activity.owner %> has posted
  <% else %>
  <div class ="gravatarhome"><%= link_to gravatar_for(feed_item.user), feed_item.user %></div>
  <span class="user">
    <%= link_to feed_item.user.name, feed_item.user %>
      </span>
      <span class="textname">shared this</span><span class="timestamp"> <%= time_ago_in_words(feed_item.created_at) %> ago.
  </span>
  <div class="FeedContent"><%= truncate(feed_item.content, :length=>150, :omission=>' ...(continued)') %>
<% if current_user?(feed_item.user) %>
    <%= link_to "delete", feed_item, method: :delete,
                                     confirm: "You sure?",
                                     title: feed_item.content %>

    <% end %><br>

  <% end %>
  </li>
  • 张贴 我早就分享过了。 150,:省略=>'…(续)%>
  • 然而,我得到了这个错误

        NameError in Static_pages#home
    
    Showing C:/app/views/shared/_feed_item.html.erb where line #5 raised:
    
    undefined local variable or method `activity' for #<#<Class:0x6ef3b98>:0x60d50d8>
    
    静态页面中的
    name错误#主页
    显示C:/app/views/shared/_feed_item.html.erb,其中第5行出现:
    未定义的局部变量或方法“activity”#
    
    有人知道是否有更好的方法来实现这一点,以及需要在哪里定义活动变量才能实现这一点吗

    更新:这是我的应用程序控制器,它使用gem

    class ApplicationController < ActionController::Base
      include PublicActivity::StoreController
    
    class ApplicationController
    错误说明了问题所在,rails不知道所指的是哪个活动

    控制器中既没有加载活动,也没有将其与提要项目关联
    或者不知道rails不知道哪个活动引用了

    活动是本部分中未定义的变量,因此它将给出错误。 如果要通过集合循环所有活动,则必须在呈现分部并使用分部名称调用时将变量作为集合传递,如下所示:

    <%= link_to feed_item.owner.name, feed_item.owner if feed_item.owner %> has posted
    
    已发布
    

    将活动替换为部分中的提要_项。它将解决您的问题。

    现在我得到了未定义的方法“owner”。。。你知道我需要在哪里定义它吗?首先让我知道,你想循环什么,它是否有任何名为owner的方法或与owner的关联。这里,feed_item是一个对象,它通过在渲染部分时传递的@feed_items集合变量循环。并且它没有任何名为owner的方法或关联。所以它给出了一个错误未定义的方法“owner”。我如何修复这个未定义的方法?这里的owner是什么。。。有什么模式、方法吗?您还必须粘贴模型代码。您使用了feed\u items=feed\u posts+feed\u活动。如果feed_帖子和feed_活动都是同一个类的实例,则可以使用此选项。