用户#index中的ArgumentError

时间:2016-09-20 11:21:46

标签: mysql ruby-on-rails passenger production

显示/home/bdme551/bdme21/app/views/users/index.html.erb第4行提出:

@users变量似乎为空。你忘了传递will_paginate的集合对象了吗? 提取的来源(第4行):

<h1>All users</h1>

<%= will_paginate %>

<ul class="users">
  <%= render @users %>

我知道我错过了什么。但是,我无法弄明白。有谁可以帮助我吗?谢谢。

Users_controller

def index
    @users = User.all.paginate(:page => params[:page], :per_page => 5)
end

控制台日志

 ActionView::Template::Error (The @users variable appears to be empty. Did you forget to pass the collection object for will_paginate?):
    1: <% provide(:title, 'All users') %>
    2: <h1>All users</h1>
    3: 
    4: <%= will_paginate %>
    5: 
    6: <ul class="users">
    7:   <% @users.each do |user| %>

app/views/users/index.html.erb:4:in `_app_views_users_index_html_erb__4020588401683243365_70237529196060'
  Rendering /home/bdme551/.rvm/gems/ruby-2.3.1/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb within rescues/layout
  Rendering /home/bdme551/.rvm/gems/ruby-2.3.1/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb
  Rendered /home/bdme551/.rvm/gems/ruby-2.3.1/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (6.7ms)
  Rendering /home/bdme551/.rvm/gems/ruby-2.3.1/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb
  Rendered /home/bdme551/.rvm/gems/ruby-2.3.1/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (3.0ms)
  Rendering /home/bdme551/.rvm/gems/ruby-2.3.1/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb
  Rendered /home/bdme551/.rvm/gems/ruby-2.3.1/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.9ms)
  Rendered /home/bdme551/.rvm/gems/ruby-2.3.1/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb within rescues/layout (32.0ms)
DEPRECATION WARNING: #original_exception is deprecated. Use #cause instead. (called from process_request at /usr/lib/ruby/vendor_ruby/phusion_passenger/rack/thread_handler_extension.rb:97)
  Rendering /home/bdme551/.rvm/gems/ruby-2.3.1/gems/web-console-3.1.1/lib/web_console/templates/index.html.erb
  Rendered /home/bdme551/.rvm/gems/ruby-2.3.1/gems/web-console-3.1.1/lib/web_console/templates/_markup.html.erb (0.9ms)
  Rendering /home/bdme551/.rvm/gems/ruby-2.3.1/gems/web-console-3.1.1/lib/web_console/templates/console.js.erb within layouts/javascript
  Rendering /home/bdme551/.rvm/gems/ruby-2.3.1/gems/web-console-3.1.1/lib/web_console/templates/_inner_console_markup.html.erb within layouts/inlined_string
  Rendered /home/bdme551/.rvm/gems/ruby-2.3.1/gems/web-console-3.1.1/lib/web_console/templates/_inner_console_markup.html.erb within layouts/inlined_string (0.7ms)
  Rendering /home/bdme551/.rvm/gems/ruby-2.3.1/gems/web-console-3.1.1/lib/web_console/templates/_prompt_box_markup.html.erb within layouts/inlined_string
  Rendered /home/bdme551/.rvm/gems/ruby-2.3.1/gems/web-console-3.1.1/lib/web_console/templates/_prompt_box_markup.html.erb within layouts/inlined_string (0.4ms)
  Rendering /home/bdme551/.rvm/gems/ruby-2.3.1/gems/web-console-3.1.1/lib/web_console/templates/style.css.erb within layouts/inlined_string
  Rendered /home/bdme551/.rvm/gems/ruby-2.3.1/gems/web-console-3.1.1/lib/web_console/templates/style.css.erb within layouts/inlined_string (0.8ms)
  Rendered /home/bdme551/.rvm/gems/ruby-2.3.1/gems/web-console-3.1.1/lib/web_console/templates/console.js.erb within layouts/javascript (22.3ms)
  Rendering /home/bdme551/.rvm/gems/ruby-2.3.1/gems/web-console-3.1.1/lib/web_console/templates/main.js.erb within layouts/javascript
  Rendered /home/bdme551/.rvm/gems/ruby-2.3.1/gems/web-console-3.1.1/lib/web_console/templates/main.js.erb within layouts/javascript (0.5ms)
  Rendered /home/bdme551/.rvm/gems/ruby-2.3.1/gems/web-console-3.1.1/lib/web_console/templates/index.html.erb (39.0ms)

5 个答案:

答案 0 :(得分:1)

如果您只是删除分页会发生什么?

假设您在视图的第4行丢失了“will_paginate”

然后从

更改控制器操作

@users = User.paginate(页面:params [:page],per_page:5)

@users = User.all

我意识到你希望分页能够发挥作用,但让我们从一个已知的优点开始,并迭代地为你需要的工作解决方案工作。你说你有两个用户,但User.all会找到它们吗?

答案 1 :(得分:0)

尝试像这样

获取索引操作中的用户集合
@users = User.all.paginate(:page => params[:page], :per_page => 2) 

并在index.html.erb中执行此操作

<%= will_paginate @users %>

答案 2 :(得分:0)

尝试添加per_page

def index
  @users = User.paginate(page: params[:page], per_page: 5) 
end

并将@users变量传递给will_paginate

<%= will_paginate @users %>

答案 3 :(得分:0)

尝试使用index.html.erb的代码:

<% provide(:title, 'All users') %>
<h1>All users</h1>

<%= will_paginate %>

<ul class="users">
   <% @users.each do |user| %>
      <%= render user %>
   <% end %>
</ul>

<%= will_paginate %>
对于app / views / users / _user.html.erb

等等

<li>
   <%= link_to user.name, user %>
</li>

答案 4 :(得分:0)

将以下内容添加到Gemfile

gem 'will_paginate', '~> 3.1.0'

并运行bundle install