设计了解自定义请求

时间:2013-08-30 16:24:56

标签: ruby-on-rails angularjs devise

我有一个rails应用程序和自定义设计视图,以添加一些与角度的交互性。所以,我的输入看起来像

<input id="user_name" name="name" ng-blur="isNameBusy()" type="text">

(省略所有不必要的属性)

这意味着发送表单时的请求看起来像:

  Parameters: {"utf8"=>"✓", "authenticity_token"=>"xxx", "name"=>"test", "email"=>"test@mail.com", "password"=>"[FILTERED]", "commit"=>"Sign up"}

但是设计并不理解这个请求,因为默认情况下,设计视图中的输入具有如下名称属性:

<input id="user_name" name="user[name]" ng-blur="isNameBusy()" type="text">
<input id="user_email" name="user[email]"  type="email">

请求看起来像:

  Parameters: {"utf8"=>"✓", "authenticity_token"=>"xxx", "user"=>{"name"=>"test", "email"=>"test@mail.com", "password"=>"[FILTERED]"}, "commit"=>"Sign up"}

您会看到,字段包含在用户键中。

当然,我可以在我的js中使用默认设计名称,例如

 registerForm.user[name].$valid

但它看起来很难看! 如何让设计理解我的要求?

1 个答案:

答案 0 :(得分:0)

如果您不想更改输入字段的名称属性,请执行以下操作:

<input id="user_name" name="user[name]" ng-blur="isNameBusy()" type="text">

您必须覆盖可在此处找到主控的默认Devise控制器:https://github.com/plataformatec/devise/blob/master/app/controllers/devise/sessions_controller.rb

然后根据您的自定义参数修改它。

此答案仅在您想要管理会话时专用,否则用户模型的“经典”控制器就可以了(例如创建新用户)。