Ruby on rails ';无';不是返回有效部分路径的ActiveModel兼容对象
第一个问题,请温柔一点:) 我在为属于具有多个关联的用户模型的客户机模型创建索引视图时遇到问题 错误消息:Ruby on rails ';无';不是返回有效部分路径的ActiveModel兼容对象,ruby-on-rails,ruby-on-rails-3,will-paginate,Ruby On Rails,Ruby On Rails 3,Will Paginate,第一个问题,请温柔一点:) 我在为属于具有多个关联的用户模型的客户机模型创建索引视图时遇到问题 错误消息: 'nil' is not an ActiveModel-compatible object that returns a valid partial path. 具体而言,错误指的是第11行上的部分错误: /views/clients/index.html <% provide(:title, current_user.name) %> <div class="row"
'nil' is not an ActiveModel-compatible object that returns a valid partial path.
具体而言,错误指的是第11行上的部分错误:
/views/clients/index.html
<% provide(:title, current_user.name) %>
<div class="row">
<aside class="span4">
<section>
<h1>Your clients</h1>
</section>
</aside>
<div class="span8">
<% if current_user.clients.any? %>
<ol class="clients">
<%= render @clients %>
</ol>
<%= will_paginate %>
<% end %>
</div>
</div>
你的客户
/clients/_client.html.erb
<li>
<span class="client-name"><%= client.name %></span>
<span class="client-info">
Extra client info to come.
</span>
</li>
额外的客户信息来。
客户控制器:
class ClientsController < ApplicationController
belongs_to :user
def index
@clients = current_user.clients.paginate(page: params[:page])
end
class客户端控制器
编辑:
用户控制器如果有帮助
class UsersController < ApplicationController
before_filter :authenticate_user!
def show
if current_user.admin?
@user = User.find(params[:id])
else
@user = current_user
end
end
def index
if current_user.admin?
@users = User.paginate(page: params[:page])
else
redirect_to root_path
end
end
def destroy
User.find(params[:id]).destroy
flash[:success] = "User destroyed."
redirect_to users_path
end
end
class UsersController
正如您可能知道的,我是rails新手,但已经搜索以确保这一点尚未被涵盖。您是否应该将参数[:page]传递给分页?我在客户机控制器和模型中声明了属于,而不仅仅是模型。两天都没注意到。谢谢@Nick,但我相信使用新的哈希符号,当前的版本是一样的。啊,对不起,我以前没见过它被使用过,但我只涉猎过ruby。如果你在controller的索引方法中加入一个调试器,@client看起来像什么?还可以尝试将索引视图中的第9行替换为
。我正在索引视图中使用一个调试器,该调试器显示--!ruby/hash:ActiveSupport::HashWithInferenceAccess操作:索引控制器:客户端
,不幸的是,我不理解您所说的“控制器索引方法中的调试器”是什么意思。但是,我在第9行尝试了您建议的代码,它显示了一个空索引。但是客户端已经生成并存在于数据库中。更新:我现在可以通过省略部分并添加来显示正确的索引
但是will_paginate现在返回@clients变量似乎为空。您是否忘记传递will_paginate的集合对象?据我所知,实例变量设置不正确?是的,您希望使用@clients迭代部分的呈现,并将其传递给will_paginate帮助器方法。这解决了问题吗?我完全错过了。我已经使用了很多InheritedResources gem,所以这不会让我大吃一惊。第二双眼睛就这么多了。