Rails 5 API 模式 ActionDispatch::Cookies
Rails 5 API mode with ActionDispatch::Cookies
我有一个 Rails 5 API,我需要使用 cookies
方法。
我需要用一些基本用户数据(不是服务器会话状态)存储前端使用的 cookie。
我的 application.rb
里有这个
config.middleware.insert_after ActionDispatch::Callbacks, ActionDispatch::Cookies
当我调用 rake middleware
时它正确显示
但这仍然发生...
NameError (undefined local variable or method `cookies' for #<SessionsController:0x007fe96fd671e8>):
控制器
class SessionsController < ApplicationController
def login
...
add_login_headers(current_company.id, user.id, user.format_rights)
...
end
private
def add_login_headers(company_id, user_id, rights)
...
cookies.permanent[Settings.cookies.app] = {
value: JSON.generate(company_id: company_id, user_id: user_id, rights: rights),
secure: true
}
end
end
我已经修复了这种贫民窟的方式,这样我就不必再添加 50,000 个额外的助手了。
def cookies
# helpers not available in --api mode
request.cookie_jar
end
您需要添加此控制器模块:
class ApplicationController < ActionController::API
include ActionController::Cookies
我有一个 Rails 5 API,我需要使用 cookies
方法。
我需要用一些基本用户数据(不是服务器会话状态)存储前端使用的 cookie。
我的 application.rb
config.middleware.insert_after ActionDispatch::Callbacks, ActionDispatch::Cookies
当我调用 rake middleware
但这仍然发生...
NameError (undefined local variable or method `cookies' for #<SessionsController:0x007fe96fd671e8>):
控制器
class SessionsController < ApplicationController
def login
...
add_login_headers(current_company.id, user.id, user.format_rights)
...
end
private
def add_login_headers(company_id, user_id, rights)
...
cookies.permanent[Settings.cookies.app] = {
value: JSON.generate(company_id: company_id, user_id: user_id, rights: rights),
secure: true
}
end
end
我已经修复了这种贫民窟的方式,这样我就不必再添加 50,000 个额外的助手了。
def cookies
# helpers not available in --api mode
request.cookie_jar
end
您需要添加此控制器模块:
class ApplicationController < ActionController::API
include ActionController::Cookies