使用'each'方法的未定义方法Ruby on Rails

时间:2017-02-06 16:56:07

标签: ruby-on-rails ruby

对于nil,我收到'each'的未定义方法错误:NilClass。

这是控制器

class UserController < ApplicationController
  def index
    @users = User.all
  end
end

视图(已编辑)

<% @users.each do |user| %>
  <td><%= @user.name %></td>
  <td><%= @user.nip %></td>
  <td><%= @user.job %></td>
  <td>Verifikasi berkas<span class="pull-right-container">
    <a href="#"><small class="pull-right"><button type="button"
       class="btn btn-block btn-info">NEXT</button></small></a></span>
  </td>
<% end %>

这是模型。它只是一张桌子,因为我只是想知道它是否有效

class User < ApplicationRecord
end

路线

Rails.application.routes.draw do
  resources :user
  root 'user#index'
end

当我在控制器中尝试@users = User.first并打印@users.name时,它正在运行。那么如何正确使用'each'方法呢?请帮忙谢谢

4 个答案:

答案 0 :(得分:1)

您需要在块

中使用user变量而不是@users
 <%= @users.each do |user| %>
   <td><%= user.name %></td>
   <td><%= user.nip %></td>
   <td><%= user.job %></td>
   <td>Verifikasi berkas<span class="pull-right-container">
       <a href="#"><small class="pull-right"><button type="button"
       class="btn btn-block btn-info">NEXT</button></small></a></span>
   </td>
 <% end %>

另外,

这不是问题的一部分,但是,您可能还需要更改路线

resources :users

答案 1 :(得分:1)

您确定问题出在each吗?你能显示你的控制台日志吗?怎么样?

<%= @users.each do |user| %>
   <td><%= user.name %></td>
   <td><%= user.nip %></td>
   <td><%= user.job %></td>
   <td>Verifikasi berkas<span class="pull-right-container">
     <a href="#"><small class="pull-right"><button type="button" class="btn btn-block btn-info">NEXT</button></small></a></span>
  </td>
<% end %>

答案 2 :(得分:1)

<%= @users.each do |user| %>]
   <tr>
   <td><%= user.name %></td>
   <td><%= user.nip %></td>
   <td><%= user.job %></td>
   <td>Verifikasi berkas<span class="pull-right-container">
       <a href="#"><small class="pull-right"><button type="button"
       class="btn btn-block btn-info">NEXT</button></small></a></span>
   </td>
   </tr>
 <% end %>

当您遍历@users并指定块变量user时,您指定对于返回的每条记录,它可以被引用为user ...请参阅上面的代码。

您还需要<tr></tr>将每条记录放在桌面上的各个行中。

答案 3 :(得分:0)

我编辑了您的代码,您可以将其粘贴到您的代码库中,我希望它能够正常运行。

这里是已编辑的控制器(app / controllers / users_controller.rb)

class UsersController < ApplicationController
  def index
    @users = User.all
  end
end

此处是已修改的视图(app / views / users / index.html.erb)

<% @users.each do |user| %>
  <td><%= user.name %></td>
  <td><%= user.nip %></td>
  <td><%= user.job %></td>
  <td>Verifikasi berkas<span class="pull-right-container">
    <a href="#"><small class="pull-right"><button type="button"
       class="btn btn-block btn-info">NEXT</button></small></a></span>
  </td>
<% end %>

这是模型(app / models / user.rb)

class User < ApplicationRecord
end

这里是路线(config / routes.rb)

Rails.application.routes.draw do
  resources :users
  root 'users#index'
end