我正在进行身份验证申请。我有这个代码
class UsersController < ApplicationController
def new
@user = User.new
@title = "User Sign Up"
end
def create
@user = User.new(params[:user])
sign_in_check @user
if @user.save
#flash[:status] = true
#flash[:alert] = "You have successfully signed up!!"
#sign_in_check @user
redirect_to root_path, :flash => { :success => "Welcome to the Bakeshop"}
else
@title = "User Sign Up"
render 'new'
end
end
end
这是一个简单的注册代码,每当我尝试注册时,rails都会返回错误:
undefined method `sign_in_check' for #<UsersController:0x68c0a90>
但我在sign_in_check
中定义了一个方法Users_helper.rb
:
module UsersHelper
def sign_in_check(user)
#some stuff to enable session
end
end
有没有人知道为什么会这样,以及如何解决它?
答案 0 :(得分:3)
原因是你的方法是一个帮手。默认情况下,助手将在具有匹配名称的视图中可用,但如果没有设置,则不会向控制器打开。
两种解决方法:
在UsersController中允许此帮助程序
class UsersController < ApplicationController
helper :user #This will expose UsersHelper module to UsersController
相反,将此方法放入ApplicationController中。由于方法的性质,我更喜欢这个。
答案 1 :(得分:1)
将UserHelper
包含在UserController
中,如下所示,您应该可以使用帮助程序中定义的任何方法。
class UsersController < ApplicationController
include UsersHelper
...
end
答案 2 :(得分:0)
这通常放在应用程序控制器中
class ApplicationController < ActionController::Base
def sign_in_check(user)
#some stuff to enable session
end
end
助手用于观看。如果你想在两者中使用它 - 你可以这样做,但这听起来不像你在这里寻找的那样。
答案 3 :(得分:0)
只需在控制器中包含辅助模块
class UsersController < ApplicationController
helper :user
...
end
由于