Перенаправление при редактировании / обновлении пользователя (с ошибкой)

Я хочу обновить / отредактировать пользователя из моей собственной формы в моем проекте, но проблема в том, что я не могу перенаправить обновление на «request.referer».

Я читал это, но у меня это не сработало: https://github.com/plataformatec/devise/wiki/How-To:-Customize-the-redirect-after-a-user -edits-их-профиль ... И другие вики-страницы.

Хорошо, мой код:

#/views/backend/perso.html.erb
<%= form_for(@user, :url => registration_path(@user), :html => { :method => :put }) do |f| %>
  <% if @user.errors.any? %>
    

<%= pluralize(form.errors.count, "error") %> prohibited this data from being saved:

    <% @user.errors.full_messages.each do |msg| %>
  • <%= msg %>
  • <% end %>
<% end %>
<%= f.label :name %>
<%= f.text_field :name %>
# Other fields ...
<%= f.label :email %>
<%= f.email_field :email %>
<%= f.label :current_password %> (we need your current password to confirm your changes)
<%= f.password_field :current_password %>
<%= f.submit %>
<% end %>

Итак, пользователь находится на этой странице и обновляет свои данные. Проблема, я перенаправлен в / users /, я попытался добавить это к маршрутам:

#config/routes.rb
devise_for :users do
    get "users", :to => "backend#perso", :as => :user_root # Rails 3
end

Или даже к контроллеру приложения:

#/controllers/application_controller.rb
private
def after_update_path_for(resource)
  backend_perso_path
end

Но все еще не работает.

Спасибо всем, кто пытается мне помочь!

Редактировать

Когда обновление не вызывает ошибок, меня перенаправляют на нужную мне страницу (добавляя after_update_path_for в моем контроллере приложения), но при наличии ошибок отображается /view/devise/registration/edit.html.erb

Update

Хорошо, поэтому я переписал контроллер Devise следующим образом: https: // github.com/plataformatec/devise/wiki/How-To%3a-Allow-users-to-edit-their-account-without-providing-a-password

Так выглядит мой код в registrations_controller вот так

#controllers/registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
  def update
    # Devise use update_with_password instead of update_attributes.
    # This is the only change we make.
    if resource.update_attributes(params[resource_name])
      set_flash_message :notice, :updated
      # Line below required if using Devise >= 1.2.0
      sign_in resource_name, resource, :bypass => true
      redirect_to after_update_path_for(resource)
    else
      clean_up_passwords(resource)
      redirect_to backend_perso_path # That's the line I need to change
    end
  end
end

Теперь я могу перенаправить на нужную страницу, но не знаю, как показать, что ошибки произошли!

10
задан Lucas 20 January 2012 в 18:03
поделиться