【问题标题】:Undefined method error with public-activity gem in RailsRails 中公共活动 gem 的未定义方法错误
【发布时间】:2013-03-12 03:27:04
【问题描述】:

我正在尝试将 public-activity gem 实现到我的 Rails 应用程序中。我正在关注优秀的 Railscast 剧集 (http://railscasts.com/episodes/406-public-activity),但在运行 localhost:3000/activities 时遇到以下错误:

活动中的 NoMethodError#index #

的未定义方法“内容”

错误表明问题出在views/activities/index.html.erb文件中:

<% @activities.each do |activity| %>
    <div class ="activity">
         <%= link_to activity.owner.content, activity.owner if activity.owner %>
          <%= render_activity activity %>
        </div>
        <% end %>

它似乎不喜欢第三行的“link_to activity.owner.content”位。

活动控制器:

class ActivitiesController < ApplicationController
  def index
   @activities = PublicActivity::Activity.order("created_at desc").where(owner_id: current_user.followed_users.all, owner_type: "User")
  end
end

内容是我的帖子表中的一列。我正在尝试跟踪/显示特定用户可能关注的用户活动。我的问题是存在于上述文件之一还是其​​他地方的问题?

如果有帮助,如果我用

替换 index.html.erb 视图
<% @activities.each do |activity| %>
  <%= activity.inspect %>
<% end %>

我可以看到页面上显示的原始数据没有错误。一旦我用前面提到的新代码替换了检查代码,就会出现错误。任何帮助将不胜感激。

附加信息:我正在使用 Devise 进行用户身份验证,并且我正在使用 Michael Hartl 的 Railstutorial 示例应用程序中看到的跟随系统。

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.2


    【解决方案1】:

    你的所有者模型有 content 属性吗?

    铁路广播说

    <%= link_to activity.owner**.name**, activity.owner if activity.owner %>
    

    而不是

    <%= link_to activity.owner.content, activity.owner if activity.owner %>
    

    【讨论】:

    • 感谢您的回复。没有所有者模型,所以这是我卡住的部分。他使用 .name 是因为他的食谱模型中有一个 name 属性,所以我想我可以用我的 post 模型中的 content 属性来切换它。
    • 你在使用设计吗?这将创建用户模型,该模型提供 current_user,即 user 作为 owner_id。
    • 是的,我正在使用设计。我想为 current_user 关注的用户显示活动,所以我将 owner_id 设置为 current_user.followed_users 。我需要将其更改为 current_user 吗?
    • 即使我将其更改为 owner.name,我仍然会遇到同样的错误。还有其他想法吗?
    • 删除整行。你需要检查你的模型。并使用相关的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多