ruby-on-rails - Rails/Ruby - 非常奇怪,未定义的方法 `name' 为 nil :NilClass on show

标签 ruby-on-rails ruby

我喜欢认为我不是 Rails 的新手,但我无法让简单的 Show Action 起作用。我很困惑。 Ruby 2.2.2p95,也在我的生产版本 Ruby 2.0.0p643 和 Rails 4.2.1 上尝试过。

模型是玩家。玩家有 2 个参数,:name 和 :position。当我索引播放器时,它工作正常。但是当我尝试查看 show.html.erb 时,我得到了经典错误:nil:NilClass 的未定义方法“名称”。

玩家模型:

class Player < ActiveRecord::Base
has_one :team, through: :ownership
has_one :ownership

validates :name, presence: true
validates :position, presence: true

def last_name
self.name.split(' ')[1]
end
end

方法:

def show
@player = Player.find(params[:id])
end

为了排除故障,我将 show.html.erb 缩减为:

 <%= render 'welcome/menu' %>

 <%= @player.name %>

一条佣金路线显示:

 player GET    /players/:id(.:format)           players#show

如果我尝试查看 ID 为 269 的播放器,这就是日志显示的内容

 Started GET "/players/269" for ::1 at 2015-09-08 21:58:12 -0400
 Processing by PlayersController#show as HTML
 Parameters: {"id"=>"269"}
 Rendered welcome/_menu.html.erb (0.7ms)
 Rendered players/show.html.erb within layouts/application (5.7ms)
 Completed 500 Internal Server Error in 11ms (ActiveRecord: 0.0ms)

 ActionView::Template::Error (undefined method `name' for nil:NilClass):
  2: 
  3: <%= render 'welcome/menu' %>
  4: 
  5: <%= @player.name %>
  6:      
 app/views/players/show.html.erb:5:in `_app_views_players_show_html_erb___175427692043794239_70253361597080'

我到底错过了什么?

编辑:

这是 index.html.erb View 的重要部分。它工作正常:

   <% @players.each do |player| %>
   <tr>
   <td></td>
    <td><%= link_to player.name, player %></td>
    <td><%= player.position %></td>
    <td><%= player.id %>

玩家 Controller :

 class PlayersController < ApplicationController
 def index
 @players = Player.all.sort_by{ |x| [x.position, x.last_name] }
 end

 def not_picked
  @players = Player.all.select { |m| m.team == nil}.sort_by{ |x| [x.position, x.last_name] }
 end
 end

def show
 @player = Player.find(params[:id])
end

 private

 def player_params
 params.require(:player).permit(:name, :position)
 end

最佳答案

not_picked 方法之后你有一个额外的结束,这是一个错字吗?如果不是,它会直接结束 Controller 并且您的 show 方法根本不会被调用。

关于ruby-on-rails - Rails/Ruby - 非常奇怪,未定义的方法 `name' 为 nil :NilClass on show,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32469808/

相关文章:

ruby - Nokogiri 可以保留属性引用风格吗?

mysql - 在 Rails 查询中使用 AND 和 OR 进行过滤

ruby-on-rails - 在 Windows 中,rails s 给出了 3 个不同的错误,我修复了一个并得到了更多

javascript - 在ruby应用程序中设置事件模型的js json文件

ruby-on-rails - 根据项目数组对 Rails 哈希进行排序

ruby - 即使安装后也无法使用 ruby​​ 2.1.0

ruby - ruby 中的无限生成器速度 - 方法 vs 枚举器 vs 惰性

ruby - 如何使用 Ruby 的新 lambda 语法?

ruby - 简单的比较程序(用于数字)将字母视为相等?

ruby-on-rails - 使用 Websockets 部署瘦