“'nil'不是与ActiveModel兼容的对象。它必须在微博模型中实现:to_partial_path”错误

时间:2013-12-02 04:42:21

标签: ruby-on-rails activemodel

当我尝试查看用户个人资料页面时,我收到上述错误。

这是我的show.html.erb代码:

<% provide(:title, @user.name) %>

<div class="row">

  <aside class="span4">
    <section>
      <h1>
        <%= gravatar_for @user %>
        <%= @user.name %>
      </h1>
    </section>
  </aside>

  <div class="span8">
    <% if @user.microposts.any? %>
      <h3>Microposts (<%= @user.microposts.count %>)</h3>
      <ol class="microposts">
        <%= render @microposts %>
      </ol>
      <%= will_paginate @microposts %>
    <% end %>
  </div>

</div>

<%= render @microposts %>导致问题。

2 个答案:

答案 0 :(得分:6)

您是否在任何地方声明变量@microposts?乍一看,看起来你应该做的是

<%= render @user.microposts %>

答案 1 :(得分:1)

我有同样的问题

是的,@microposts在控制器show方法中声明为:

def show
  @user = User.find(params[:id])
  @microposts = @user.microposts.paginate(page: params[:page])
end

更新:我发现show动作定义了两次(其中一个定义了@microposts)。要解决此问题,我只是删除了未定义show的第二个@microposts操作。我想知道不止一个人能够设法复制节目动作。