Ruby on rails 不在'上时编辑记录;通常';轨道编辑路径

Ruby on rails 不在'上时编辑记录;通常';轨道编辑路径,ruby-on-rails,devise,Ruby On Rails,Devise,我有一个用户模型,可以在通常的rails编辑路径上进行编辑 但是,我想允许用户模型中的许多字段从根目录进行编辑 我已经尝试将以下代码放入索引页,它可以工作,除非其中一个字段出现验证错误。发生这种情况时,用户将被路由到通常的用户编辑路径 如果用户从索引页发送请求,我如何更改此选项,以便将其路由回索引(带有错误消息)(但保留此选项,以便用户将其路由回编辑路径(如果用户从该路径进行编辑) 而且,我觉得我正在破解这个问题,而不是以“最佳实践”的方式来做——是否有更好的方式来做呢 我已从编辑路径复制到索引

我有一个用户模型,可以在通常的rails编辑路径上进行编辑

但是,我想允许用户模型中的许多字段从根目录进行编辑

我已经尝试将以下代码放入索引页,它可以工作,除非其中一个字段出现验证错误。发生这种情况时,用户将被路由到通常的用户编辑路径

如果用户从索引页发送请求,我如何更改此选项,以便将其路由回索引(带有错误消息)(但保留此选项,以便用户将其路由回编辑路径(如果用户从该路径进行编辑)

而且,我觉得我正在破解这个问题,而不是以“最佳实践”的方式来做——是否有更好的方式来做呢

我已从编辑路径复制到索引页的代码:

<%= 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 %>

看起来Kirti Thorat的响应是正确的-但我无法从Desive controller中看出,如果验证失败,它在哪里定义了应该使用的路由?是的,这是可能的,但为此,您首先需要检查HTTP Referer,它将为您提供请求的来源,并相应地您可以呈现您在更新操作中的视图。例如:

当更新失败时,可以通过检查referer来呈现适当的编辑用户路径 如下图所示

if URI(request.referer).path == edit_user_path 
  render :edit              ### Specify appropriate action
else
  render :index            ### Specify appropriate action
end

当出现验证错误时,控制器会做什么?我已经在帖子中添加了注册更新方法
if URI(request.referer).path == edit_user_path 
  render :edit              ### Specify appropriate action
else
  render :index            ### Specify appropriate action
end