在controllers / api / v1 / sessions_controller.rb中我有......
module Api
module V1
class SessionsController < ApplicationController
respond_to :json
skip_before_filter :verify_authenticity_token
def create
@user = User.find_by(email: params[:session][:email].downcase)
if @user && @user.authenticate(params[:session][:password])
token = User.new_remember_token
sign_in @user, token
然后在helpers / api / v1 / sessions_helper.rb中我有......
module Api
module V1
module SessionsHelper
def sign_in (user, token)
user.update_attribute(:remember_token, User.digest(token))
self.current_user = user
end
end
end
end
当我尝试POST到Sessions时,我收到以下错误。
NoMethodError (undefined method `sign_in' for #<Api::V1::SessionsController:0x0000010324d278>):
app/controllers/api/v1/sessions_controller.rb:12:in `create'
为什么我收到此错误?这不正确吗?
答案 0 :(得分:2)
helper
的{{1}}类中定义的方法可以直接访问仅在相应的视图(相同资源)和不在控制器中 ,因此您需要在控制器中包含resource
模块显式才能访问这些辅助方法。
helper
您收到错误是因为module Api
module V1
class SessionsController < ApplicationController
include Api::V1::SessionsHelper ## Add this
## ...
end
end
end
不知道Api::V1::SessionsController
方法是否存在。