在用户登录并且他们的用户名已经过身份验证并保存在会话[:user_name]中之后,当使用method ="post"(使用标准html)提交表单时,将清除所有会话数据并将用户路由回登录页面.如果方法设置为get,则不会发生这种情况.
当我使用导轨"form_tag"生成这些额外的行时,后期工作:
怎么了?
你在使用Rails 3.0.4吗?听起来它可能与CSRF修复有关.
如果您需要特定于您需要的修补程序,则可以在控制器中覆盖#handle_unverified_request.请参阅https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/request_forgery_protection.rb.
这是OmniAuth和OpenId这个问题的一个例子.(参见"Rails 3.0.4中的CSRF保护"一节)
如果您要创建自己的html表单,也会发生此问题.
如果你在不知道原因的情况下被重定向,那是因为ApplicationController中的"protect_from_forgery"
为了允许您的表单发布,请将以下代码添加到其中(或使用form_tag
,下面的说明):
"form_tag"工作的原因是因为form_tag
为您生成隐藏字段=)