Ruby on rails 罗。第8章第8.2.4节-未定义的签名方法

Ruby on rails 罗。第8章第8.2.4节-未定义的签名方法,ruby-on-rails,railstutorial.org,Ruby On Rails,Railstutorial.org,我正在编写RoR教程,第8章。我正在尝试完成第8.2.4节-更改布局链接,并运行了$bundle exec rspec spec/,但出现以下错误: Failures: 1) Authentication signin with valid information Failure/Error: click_button "Sign in" NoMethodError: undefined method `sign_in' for #<SessionsC

我正在编写RoR教程,第8章。我正在尝试完成第8.2.4节-更改布局链接,并运行了
$bundle exec rspec spec/
,但出现以下错误:

Failures:

  1) Authentication signin with valid information 
     Failure/Error: click_button "Sign in"
     NoMethodError:
     undefined method `sign_in' for #<SessionsController:0x007fef66b85fd0>
     # ./app/controllers/sessions_controller.rb:9:in `create'
     # (eval):2:in `click_button'
     # ./spec/requests/authentication_pages_spec.rb:35:in `block (4 levels) in <top (required)>'

  2) Authentication signin with valid information 
     Failure/Error: click_button "Sign in"
     NoMethodError:
       undefined method `sign_in' for #<SessionsController:0x007fef66b33eb0>
     # ./app/controllers/sessions_controller.rb:9:in `create'
     # (eval):2:in `click_button'
     # ./spec/requests/authentication_pages_spec.rb:35:in `block (4 levels) in <top (required)>'

  3) Authentication signin with valid information 
     Failure/Error: click_button "Sign in"
     NoMethodError:
       undefined method `sign_in' for #<SessionsController:0x007fef6698bba8>
     # ./app/controllers/sessions_controller.rb:9:in `create'
     # (eval):2:in `click_button'
     # ./spec/requests/authentication_pages_spec.rb:35:in `block (4 levels) in <top (required)>'

  4) Authentication signin with valid information 
     Failure/Error: click_button "Sign in"
     NoMethodError:
       undefined method `sign_in' for #<SessionsController:0x007fef68286130>
     # ./app/controllers/sessions_controller.rb:9:in `create'
     # (eval):2:in `click_button'
     # ./spec/requests/authentication_pages_spec.rb:35:in `block (4 levels) in <top (required)>'

Finished in 1.34 seconds
44 examples, 4 failures

Failed examples:

rspec ./spec/requests/authentication_pages_spec.rb:39 # Authentication signin with valid information 
rspec ./spec/requests/authentication_pages_spec.rb:40 # Authentication signin with valid information 
rspec ./spec/requests/authentication_pages_spec.rb:38 # Authentication signin with valid information 
rspec ./spec/requests/authentication_pages_spec.rb:41 # Authentication signin with valid information 

我似乎找不到错误。根据错误输出,我应该在哪里查找,有什么建议吗?多谢各位

检查您的config/routes.rb文件以确保:

match '/signin', to: 'sessions#new'
与会话控制器看到的内容相匹配。“sessions_controller.rb”的创建方法应具有:

def create
  user = User.find_by_email(params[:session][:email].downcase)
  if user && user.authenticate(params[:session][:password])
    sign_in user
    redirect_back_or user
  else
    flash.now[:error] = 'Invalid email/password combination'
    render 'new'
  end
end

只是我的猜测。在教程中,我目前也在这个领域。祝你好运,我希望这对你有帮助

可能有点晚了,但无论如何

检查在app/controllers/application_controller.rb中是否有“include sessionhelp”

默认情况下,帮助程序包括在视图中,但您必须在控制器中显式地包括它们

可能的副本表明应用程序控制器中应该有一个“include SessionHelper”。
def create
  user = User.find_by_email(params[:session][:email].downcase)
  if user && user.authenticate(params[:session][:password])
    sign_in user
    redirect_back_or user
  else
    flash.now[:error] = 'Invalid email/password combination'
    render 'new'
  end
end