我有一个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
但它看起来很难看! 如何让设计理解我的要求?
答案 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
然后根据您的自定义参数修改它。
此答案仅在您想要管理会话时专用,否则用户模型的“经典”控制器就可以了(例如创建新用户)。