【问题标题】:submit from HAML form clears session data (Rails3)?从 HAML 表单提交清除会话数据(Rails3)?
【发布时间】:2011-04-15 02:10:10
【问题描述】:

我有以下型号:

项目 - 名称:文本 - 描述:文本

这是我用 HAML 为新项目编写的表单的 sn-p:

%p 创建一个新项目: %form{:method => "post", :action=>"/projects/"} %label{:for => "project-name[name]"} 名称: %input{:type=>'text', :size=>40, :name=>'projectname', :id=>'project-name'} %br/ %label{:for => "project-description[description]"} 描述: %textarea{:rows=>'10',:cols=>'10',:name=>'projectdescription',:id=>'project-description'} %br/ %input{:type=>'提交', :value=>'创建'}

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

这就是我怀疑的原因:

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

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails-3 haml


    【解决方案1】:

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

    【讨论】:

    • form_for 是一个助手,它屈服于提供的块。我相信它也可以用于haml。自己没用过,不过好像有人用form_for和haml:haml-lang.com/docs/yardoc/…
    • 就是这样。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2014-11-25
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 2014-02-18
    • 2011-09-27
    相关资源
    最近更新 更多