gpt4 book ai didi

ruby-on-rails - 助手没有定义方法

转载 作者:太空宇宙 更新时间:2023-11-03 17:34:23 24 4
gpt4 key购买 nike

Ruby on Rails 3.2

我的 sessions_controller.rb 检查“signed_in_person”以绕过登录,如果他们已经有一个已记录的 session 。

我的“signed_in_person”在 session_helper.rb 中定义,但出现错误:

Started POST "/sessions" for 50.241.102.227 at 2014-02-25 10:12:33 -0800
Processing by SessionsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"fFo4EM1MOHNO1Thic6qA/uapGj8pbiNaepKYF5Ge0Tw=", "session"=>{"email"=>"dduck@blah.com", "password"=>"[FILTERED]"}, "com
mit"=>"Sign in"}
Person Load (0.1ms) SELECT `persons`.* FROM `persons` WHERE `persons`.`email` = 'dduck@blah.com' LIMIT 1
Completed 500 Internal Server Error in 66ms

NoMethodError (undefined method `sign_in_person' for #<SessionsController:0x00000004f7ace8>):
app/controllers/sessions_controller.rb:11:in `create'

从控制台检查时,Person 在数据库表中。我的 session Controller :

def create
if params[:session][:email].include? 'blah.com'
person = Person.find_by_email(params[:session][:email].downcase)
if person && person.authenticate(params[:session][:password])
sign_in_person person
redirect_back_or person
else
flash.now[:error] = 'Invalid email/password combination'
render 'new'
end
else
...
end
end

我的 sessions_helper:

module SessionsHelper

# For Persons

def sign_in_person(person)
cookies[:remember_token] = person.remember_token
self.current_person = person
end

def signed_in_person?
!current_person.nil?
end
...

关于为什么我的 sessions_helper 没有帮助的任何想法?

最佳答案

辅助方法可从 View 中获得,而不是从 Controller 中获得。

要从 Controller 使用它们,(取自 here )您可以:

  1. 在 Controller 中包含辅助模块
  2. 将助手定义为 Controller 方法,并通过 helper_method :method_name 将其标记为助手。

在您的情况下,由于您将使用 SessionsHelper 中的几种方法,我认为最好包括这样的帮助器:

class SessionsController < ApplicationController
include SessionsHelper


...
end

关于ruby-on-rails - 助手没有定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22023121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com