0

我有一个 Rails 应用程序,并定制了设计视图,以向它们添加一些与 Angular 的交互性。所以,我的输入看起来像

<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

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

4

1 回答 1

0

如果您不想更改输入字段的名称属性,如下所示:

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

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

然后根据您的自定义参数对其进行修改。

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

于 2013-08-30T16:31:32.423 回答