当前位置: 首页 > 知识库问答 >
问题:

UsersController中的NoMethodError#show/undefined方法`key?‘对于nil:nilclass

戈安翔
2023-03-14

我在学习Michael Hartl的Rails教程时遇到了一个意外错误。一帆风顺。

我继续进行清单7.5--为用户的show操作添加一个视图,然后将show操作添加到用户控制器--这解决了Hartl得到的错误,但这些步骤并没有解决我的错误。

基于这个问题,我已经验证了我的app/models/user.rb没有错别字:在搜索错别字之后,我将Hartl的代码复制并粘贴到我的文件中。

任何关于在其他地方寻找错别字/问题的指导都将不胜感激。

def show
  @user = User.find(params[:id])
end

actionpack(3.2.8)lib/action_controller/metal/hide_actions.rb:36:in`Visible_action?‘

actionpack(3.2.8)lib/action_controller/metal/hide_actions.rb:18:in`method_for_action'

actionpack(3.2.8)lib/action_controller/metal/implicit_render.rb:14:in`method_for_action'

actionpack(3.2.8)lib/abstract_controller/base.rb:115:在'process'中

actionpack(3.2.8)lib/abstract_controller/rendering.rb:45:in`process'

actionpack(3.2.8)lib/action_controller/metal.rb:203:在'dispatch'中

actionpack(3.2.8)lib/action_dispatch/routing/route_set.rb:73:in`call'

actionpack(3.2.8)lib/action_dispatch/routing/route_set.rb:73:在'dispatch'中

actionpack(3.2.8)lib/action_dispatch/routing/route_set.rb:36:in`call'

actionpack(3.2.8)lib/action_dispatch/routing/route_set.rb:600:in`call'

actionpack(3.2.8)lib/action_dispatch/middleware/best_standards_support.rb:17:in`call'

机架(1.4.1)lib/rack/etag.rb:23:in'call'

actionpack(3.2.8)lib/action_dispatch/middleware/flash.rb:242:in`call'

rack(1.4.1)lib/rack/session/abract/ID.RB:205:在`上下文‘中

机架(1.4.1)lib/rack/session/abract/id.rb:200:在`呼叫‘中

actionpack(3.2.8)lib/action_dispatch/middleware/callbacks.rb:28:in`block in call'

activesupport(3.2.8)lib/active_support/callbacks.rb:405:在`_run__3560654018285941260__call__3098371293035639072__callbacks'中

activesupport(3.2.8)lib/active_support/callbacks.rb:405:在`__run_callback'中

activesupport(3.2.8)lib/active_support/callbacks.rb:81:in`run_callbacks'

actionpack(3.2.8)lib/action_dispatch/middleware/callbacks.rb:27:in`call'

actionpack(3.2.8)lib/action_dispatch/middleware/reloader.rb:65:in`call'

actionpack(3.2.8)lib/action_dispatch/middleware/debug_exceptions.rb:16:in`call'

actionpack(3.2.8)lib/action_dispatch/middleware/show_exceptions.rb:56:in`call'

railties(3.2.8)lib/rails/rack/logger.rb:26:in`call_app'

机架(1.4.1)lib/rack/runtime.rb:17:in'call'

activesupport(3.2.8)lib/active_support/cache/strategy/local_cache.rb:72:in`call'

机架(1.4.1)底座/机架/锁。RB:15:在“呼叫”中

railties(3.2.8)lib/rails/rack/log_tailer.rb:17:in`call'

机架(1.4.1)lib/rack/handler/webrick.rb:59:在“服务”中

/users/aaronmacy/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/httpserver.rb:138:在`服务‘中

class UsersController < ApplicationController

  def show
    @user = User.find(params[:id])
  end

  def new
  end
end

user.rb:

class User < ActiveRecord::Base
  attr_accessible :name, :email, :password, :password_confirmation
  has_secure_password

  before_save { self.email.downcase! }

  validates :name, presence: true, length: { maximum: 50 }
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :email, presence:   true,
                    format:     { with: VALID_EMAIL_REGEX },
                    uniqueness: { case_sensitive: false }
  validates :password, presence: true, length: { minimum: 6 }
  validates :password_confirmation, presence: true
end

例程。rb:

SampleApp::Application.routes.draw do
  resources :users

  root to: 'static_pages#home'

  match '/signup',  to: 'users#new'

  match '/help',    to: 'static_pages#help'
  match '/about',   to: 'static_pages#about'
  match '/contact', to: 'static_pages#contact'
end

共有1个答案

叶建柏
2023-03-14

这是一个bcrypt问题。验证您的Gemfile中是否有未注释的bcrypt,运行bundle install,然后重新启动服务器。

参见:未定义方法`key?‘对于nil:nilclass使用bcrypt-ruby和has_secure_password

 类似资料:
  • 全部显示 Show 方法应用于 Balloon 对象的情形。 显示指定气球对象。返回表示用户单击的气球或标签的 MsoBalloonButtonType 常量。只读。MsoBalloonButtonType 可以为下列 MsoBalloonButtonType 常量之一。msoBalloonButtonAbortmsoBalloonButtonBackmsoBalloonButtonCancelm

  • 本文向大家介绍写一个方法对对象中的key进行排序相关面试题,主要包含被问及写一个方法对对象中的key进行排序时的应答技巧和注意事项,需要的朋友参考一下

  • 本文向大家介绍JavaScript中获取纯正的undefined的方法,包括了JavaScript中获取纯正的undefined的方法的使用技巧和注意事项,需要的朋友参考一下 1、为什么要获取undefined? 因为undefined在javascript中不是保留字,可以被用户当做变量来赋值,这样如果我们后期需要用到undefined来检测一个变量的话,那么检测的值就不准确了; 举个栗子: s

  • 我正在运行Rails 2.3.5应用程序,在运行脚本/服务器时,我看到了以下内容: 如果我在boot中注释掉第60行。rb(Rails::GemDependency.add\u freeze\u gem\u path)并运行脚本/服务器,我得到了以下结果: 所以,我真的不知道该怎么办。希望我能得到一些快速的帮助。谢谢

  • 本文向大家介绍Promise.all中对于reject的处理方法,包括了Promise.all中对于reject的处理方法的使用技巧和注意事项,需要的朋友参考一下 昨天写了个小爬虫,用axios.all同时请求多个页面时,国内网络的原因很容易就超时然后reject了,佛系resolve不可取啊,然后想到可以实现一个“重发失败请求”的功能。 Promise.all(requestPromises).