修改Devise RegistrationsController编辑方法

时间:2019-06-12 10:45:36

标签: ruby-on-rails devise

我目前有用户在localhost:3000/en/users/edit?上编辑他们的个人资料 当他们编辑个人资料时,他们可能需要添加公司(Entreprise)。

因此,我修改了编辑页面以接收entreprise/new.html.erb的模式。

我认为现在我需要将@entreprise = current_user.entreprises.build传递给Registration控制器(这是控制user/edit.html.erb页面的控制器。

class RegistrationsController < Devise::RegistrationsController
  protected
 def edit
    super
    @entreprise = current_user.entreprises.build
  end

...
end

下面我列出了Entreprise.new

的所有参数

我的路线上有以下内容:

devise_for :users, controllers: {registrations: "registrations", confirmations: "confirmations", omniauth_callbacks: "omniauth_callbacks"}, skip: :omniauth_callbacks
devise_scope :user do
  get "settings", to: "devise/registrations#edit"
end

当我加载编辑页面并调用模式时,页面加载为空。我可以看到控制台正在处理以下内容:

Processing by RegistrationsController#edit as HTML
  Parameters: {"locale"=>"en"}
.......
  Rendering registrations/edit.html.erb within layouts/application
.....
  Rendered registrations/edit.html.erb within layouts/application (925.5ms)
.......
Processing by EntreprisesController#new as JS
  Parameters: {"locale"=>"en"}
 ......
  Rendering entreprises/new.html.erb within layouts/application
   ....

  Rendered entreprises/_form.html.erb (81.2ms)
  Rendered entreprises/new.html.erb within layouts/application (124.4ms)

但是模态根本没有打开。在检查器中签入时,模态中没有任何信息。没有错误记录

2 个答案:

答案 0 :(得分:0)

我认为您需要在@enterprise调用(调用super)之前分配render :edit变量,因为在渲染视图时,@enterprise变量不是实际尚未分配。

答案 1 :(得分:0)

日志显示正在调用表单的组件。 was new.js.erb文件在这里丢失了什么。 我在里面添加了$("#modal-window").html("<%= escape_javascript(render 'entreprises/form' %>")。 现在,窗体可以正确加载。下一步是将记录保存到企业模型中,并且已全部设置。