У меня есть модель пользователя, которую можно редактировать на обычном пути редактирования рельсов.Редактирование записи, если не на «обычном» пути редактирования рельсов
Однако я хочу разрешить нескольким полям из пользовательской модели быть редактируемыми из корня.
Я попытался поместить следующий код на индексную страницу, и он работает, за исключением случаев, когда в одном из полей есть ошибка проверки. Когда это происходит, пользователь перенаправляется на обычный путь редактирования пользователя.
Как это изменить, чтобы пользователь перенаправлялся обратно к индексу (с сообщением об ошибке), если он отправил запрос с индексной страницы (но сохраните его так, чтобы пользователь перенаправлялся обратно к пути редактирования, если это ? где они делали правку из
Кроме того, чувствует, как я хакерство это и не делать это в «наилучшей практики» способ - это есть лучший способ сделать это
код я скопированный с. путь редактирования на индексную страницу:
<%= simple_form_for(current_user, :url => registration_path(current_user), :html => { :method => :put, :class => 'form-vertical ' }) do |f| %>
<%= f.error_notification %>
<%= display_base_errors current_user %>
<%= f.input :dry_fly, inline_label: 'I use dry flies', as: :boolean, label: false %>
<%= f.input :wet_fly, inline_label: 'I use wet flies', as: :boolean, label: false %>
<%= f.input :lure, inline_label: 'I use lures', as: :boolean, label: false %>
<%= f.input :still_water, inline_label: 'I fish lakes', as: :boolean, label: false %>
<%= f.input :river, inline_label: 'I fish rivers', as: :boolean, label: false %>
<%= f.input :current_password, :hint => "we need your current password to confirm your changes", :required => true %>
<%= f.button :submit, 'Update', :class => 'btn-primary' %>
<% end %>
R egistrationsController # обновление:
def update
self.resource = resource_class.to_adapter.get!(send(:"current_#{resource_name}").to_key)
prev_unconfirmed_email = resource.unconfirmed_email if resource.respond_to?(:unconfirmed_email)
if update_resource(resource, account_update_params)
yield resource if block_given?
if is_flashing_format?
flash_key = update_needs_confirmation?(resource, prev_unconfirmed_email) ?
:update_needs_confirmation : :updated
set_flash_message :notice, flash_key
end
sign_in resource_name, resource, :bypass => true
respond_with resource, :location => after_update_path_for(resource)
else
clean_up_passwords resource
respond_with resource
end
end
Похоже, ответ Kirti Thorat является правильный путь - но я не могу видеть из контроллера Придумайте, где он определяет, какой маршрут следует использовать, если проверка не пройдена?
Что делает контроллер делать, когда есть ошибка проверки? –
Я добавил метод регистрации # для моего сообщения – JRTurner1234