长话短说,我手动使用这个,因为我必须在纯HTML中创建表单。
我使用部分(以haml为单位)
%input{name: "authenticity_token", type: "hidden", value: form_authenticity_token}
这会输出一个空白输入框:
<input name='authenticity_token' type='hidden'>
但这可以正常运作:
%input{name: "authenticity_token", type: "hidden", value: session[:_csrf_token]}
奇怪的是,我从docs
得到了这个有没有人知道发生了什么事?
答案 0 :(得分:4)
我认为您引用的文档暗示此方法form_authenticity_token()
只能在控制器中访问(类: ActionController :: RequestForgeryProtection)。
您应该直接使用session[:_csrf_token]
或者您可以设置共享变量:
# in controller
def my_action
@auth_token_form = form_authenticity_token
end
# in view
%input{name: "authenticity_token", type: "hidden", value: @auth_token_form}