【问题标题】:devise for rails with angular js on front end为前端带有角度 js 的导轨设计
【发布时间】:2015-01-18 13:31:17
【问题描述】:
$http({
     method:'POST',
     url: '/users',
     data: JSON.stringify(user),
     headers: {'Content-Type':'application/json'}
   }) 

我正在使用上述方法使用 devise 注册新用户。 控制台上没有错误,但是我收到了rollback_transaction,但我不知道发生了什么。

Started POST "/users" for 127.0.0.1 at 2015-01-18 19:10:59 +0545
Processing by Devise::RegistrationsController#create as HTML
  Parameters: {"email"=>"my_user1@gmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "registration"=>{"email"=>"my_user1@gmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}}
   (0.2ms)  begin transaction
   (0.1ms)  rollback transaction

为什么会这样?

【问题讨论】:

  • 这是因为 csrf 令牌正在发出
  • 我正在使用 angular_rails_csrf gem 作为 csrf 令牌。

标签: ruby-on-rails angularjs devise


【解决方案1】:

这是因为Devise::RegistrationsController 需要{ "user" : {"email"=>"my_user1@gmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]" } 形式的参数。在您的情况下,当它(在 RegistrationsController 中创建操作)尝试创建新用户时,它将空哈希传递给 User.create 方法。

用键user 和值'user' 将您的http 数据包装在另一个散列中。像这样:

$http({
     method: 'POST',
     url: '/users',
     data: JSON.stringify({ user: user }),
     headers: {'Content-Type':'application/json'}
   })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多