Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ';无';不是返回有效部分路径的ActiveModel兼容对象_Ruby On Rails_Ruby On Rails 3_Will Paginate - Fatal编程技术网

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,所以这不会让我大吃一惊。第二双眼睛就这么多了。