从HAML表单提交清除会话数据(Rails3)?

时间:2011-04-15 02:10:10

标签: ruby-on-rails-3 haml

我有以下型号:

Project
 - name:text
 - description:text

这是我在HAML中为新项目编写的表格的片段:

%p Create a new project:

%form{:method => "post", :action=>"/projects/"}
  %label{:for => "project-name[name]"} Name:
  %input{:type=>'text', :size=>40, :name=>'projectname', :id=>'project-name'} 
  %br/
  %label{:for => "project-description[description]"} Description:
  %textarea{:rows=>'10',:cols=>'10',:name=>'projectdescription',:id=>'project-description'}
  %br/
  %input{:type=>'submit', :value=>'Create'}

当用户点击提交时,会话数据似乎被清除。

这就是为什么我怀疑这个:

  • 我正在使用omniauth,当用户登录时,我设置了session[:user_id] = user.id
  • 我在项目控制器中有一个重定向,用于确保用户始终登录所有操作
  • 正确处理indexnew操作。
  • 而不是正在处理的创建操作,用户被退回到登录页面(根据before_filter)
  • 我使用erb文件复制了相同的功能,没有任何问题。当我放入new.haml文件时,错误再次出现。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我相信这里发生的事情是你在ApplicationController中有`protect_from_forgery',但csrf令牌没有发送到应用程序。如果是AJAX调用,请检查是否包含相关的rails.js。如果您使用的是form_for,那么帮助程序会自动使用csrf标记插入隐藏字段。