Ruby on rails 将两个部分渲染为一个(rails 3),我这样做对吗?
我正在使用Public_Activity gem来显示网站上正在执行的操作列表。我已经在主页上有了一个主要的feed,但我也想包括所有正在使用gem跟踪的活动 下面是我试图在控制器内部执行的操作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
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_活动都是同一个类的实例,则可以使用此选项。