Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails,designe-Admin试图编辑另一个用户配置文件,但加载了自己的配置文件_Ruby On Rails_Ruby_Ruby On Rails 4_Devise - Fatal编程技术网

Ruby on rails Rails,designe-Admin试图编辑另一个用户配置文件,但加载了自己的配置文件

Ruby on rails Rails,designe-Admin试图编辑另一个用户配置文件,但加载了自己的配置文件,ruby-on-rails,ruby,ruby-on-rails-4,devise,Ruby On Rails,Ruby,Ruby On Rails 4,Devise,作为Rails开发的新手,我试图了解以下几点: 我正在使用Desive+Cancan+olify应用程序尝试创建身份验证和用户管理。 我已经对一般的用户行为进行了分类,我正试图实现管理员用户能够编辑另一个用户配置文件 目前,管理员用户可以列出用户并尝试编辑其他用户的配置文件。然而,当进入编辑页面时,尽管URL/route对我来说是正确的,但表单中仍然会显示“currentuser”/admin信息 简言之,情况如下: UserId1是一个管理员 UserId1正在尝试编辑UserId2的配置文件

作为Rails开发的新手,我试图了解以下几点: 我正在使用Desive+Cancan+olify应用程序尝试创建身份验证和用户管理。 我已经对一般的用户行为进行了分类,我正试图实现管理员用户能够编辑另一个用户配置文件

目前,管理员用户可以列出用户并尝试编辑其他用户的配置文件。然而,当进入编辑页面时,尽管URL/route对我来说是正确的,但表单中仍然会显示“currentuser”/admin信息

简言之,情况如下: UserId1是一个管理员 UserId1正在尝试编辑UserId2的配置文件

作为UserId1登录,以下路由将带来UserId1而不是UserId2的详细信息:
http://localhost:3000/d/users/edit.2

以下是routes.rb:

devise_for :users, :path_prefix => 'd', :controllers => { :registrations => 'registrations' }

namespace :admin do
  get '', to: 'dashboard#index', as: '/'
  resources :users
end
以下是用户#索引视图:

<table>
  <tbody>
    <% @users.each do |user| %>
      <tr>
        <td><%= user.id %></td>
        <td><%= user.first_name %></td>
        <td><%= user.last_name %></td>
        <td><%= user.email %></td>
        <td>
          <%= link_to edit_user_registration_path(user) %>
        </td>
        <td>
          <%= link_to registration_path(user),class: "red", :data => { :confirm => "Are you sure?" }, :method => :delete %>
        </td>
      </tr>
    <% end %>
  </tbody>
</table>

您的问题源于这样一个事实:路由应该以
edit/2
而不是
edit.2
结束。
.2
使Rails认为您正在尝试访问文件扩展名为
2
的页面,而不是id为2的用户的用户编辑页面

试着运行rake路由,查看那里列出了哪些路由,以及它们中是否有与您尝试使用的路由匹配的路由。


<%= link_to edit_user_registration_path(user) %>
仍然指向您的设计路线,应该是:

<%= link_to edit_admin_user_path(user) %>


这在rake routes中有描述。

我已经添加了rake routes结果-在这里我觉得一切都很好。编辑/2给我一个“无路由匹配错误”。此外,针对UserId1的edit.1也可以工作fine@Neiluj对于用户Id 1,它可以正常工作,因为用户编辑路径始终使用当前用户(在您的示例中是用户1)。看起来您可能需要按照前面所述创建自己的路线。另外,作为一个附带问题,管理员用户路由是什么,您可以通过这些路由编辑任何用户吗?管理员只是用户管理员/控制台的名称空间。admin中的用户路由对应于使用scaffold Users资源生成的路由,用于列出admin命名空间中的所有用户。希望这是有意义的。我尝试过这样做,并在Users\u控制器的CRUD/edit中使用
重定向\u来编辑用户注册路径(user)
,但没有成功。感谢这一点-我的错误来自尝试使用不同资源的Desive CRUD,因此无法正常工作。我现在已经在相关的admin:user控制器中创建了CRUD操作,它让我走得更远。我也遇到了同样的问题。这是我的解决办法
<%= link_to edit_user_registration_path(user) %>
<%= link_to edit_admin_user_path(user) %>