Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 从HAML表单提交是否清除会话数据(Rails3)?_Ruby On Rails 3_Haml - Fatal编程技术网

Ruby on rails 3 从HAML表单提交是否清除会话数据(Rails3)?

Ruby on rails 3 从HAML表单提交是否清除会话数据(Rails3)?,ruby-on-rails-3,haml,Ruby On Rails 3,Haml,我有以下型号: Project - name:text - description:text 项目 -名称:text -说明:文本 这是我在HAML中为新项目编写的表单的一部分: %p Create a new project: %form{:method => "post", :action=>"/projects/"} %label{:for => "project-name[name]"} Name: %input{:type=>'text', :size=>40, :nam

我有以下型号:

Project - name:text - description:text 项目 -名称: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'} %p创建一个新项目: %格式{:method=>“post”,:action=>“/projects/”} %标签{:for=>“项目名称[名称]”}名称: %输入{:type=>'text',:size=>40,:name=>'projectname',:id=>'project-name'} %溴/ %标签{:for=>“项目说明[说明]”}说明: %textarea{:rows=>'10',:cols=>'10',:name=>'projectdescription',:id=>'project-description'} %溴/ %输入{:type=>'submit',:value=>'Create'} 当用户单击submit时,会话数据似乎被清除

这就是我怀疑这一点的原因:

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

有什么想法吗

我相信这里发生的事情是,您的ApplicationController中有“防止伪造”,但csrf令牌不会发送到应用程序。如果是AJAX调用,请检查是否包含相关的rails.js。如果您使用form_for,那么助手将自动插入带有csrf令牌的隐藏字段。

form_for是一个助手,它将屈服于提供的块。我相信它也可以用在haml中。我自己从来没有用过它,但似乎人们都在用form_来形容haml:就是这样。谢谢你的帮助。