Ruby on rails 奇怪的错误会阻止用户编辑设备配置文件

Ruby on rails 奇怪的错误会阻止用户编辑设备配置文件,ruby-on-rails,ruby,devise,ruby-on-rails-3.2,cancan,Ruby On Rails,Ruby,Devise,Ruby On Rails 3.2,Cancan,我在Rails 3.2.13中有一个应用程序正在开发中,其中包括Desive、omniauth和cancan。在我开始使用cancan实施授权之前,一切都很顺利。更有趣的是,cancan本身就像charm一样工作,但在编辑Desive提供的用户配置文件时会产生错误。如果坎坎真的这么做了,我真的不确定 错误消息是: No route matches {:controller=>"devise/posts"} 我有一个posts控制器,但它与Desive没有任何联系。这是故事中最奇怪的部分

我在Rails 3.2.13中有一个应用程序正在开发中,其中包括Desive、omniauth和cancan。在我开始使用cancan实施授权之前,一切都很顺利。更有趣的是,cancan本身就像charm一样工作,但在编辑Desive提供的用户配置文件时会产生错误。如果坎坎真的这么做了,我真的不确定

错误消息是:

No route matches {:controller=>"devise/posts"}
我有一个posts控制器,但它与Desive没有任何联系。这是故事中最奇怪的部分

我成功地定位了产生问题的地点,但我无法找出问题的原因以及如何解决问题。因此,在我的
应用程序.html.erb
中,我有一个只向管理员显示的菜单,这是源代码:

<% if (user_signed_in? && (current_user.role?("sysadmin") || current_user.role?("postadmin") || current_user.role?("testadmin")))  %>

    <ul class="nav navbar-nav nav-pills">
        <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown" style="color: crimson;">
                <span class="glyphicon glyphicon-cog"></span> Administration <b class="caret"></b></a>
            <ul class="dropdown-menu">
                <% if (current_user.role?("sysadmin") || current_user.role?("postadmin")) then %>
                    <li><%= link_to 'Posts', :controller => :posts, :action => :index %></li>
                <% end %>
                <% if (current_user.role?("sysadmin") || current_user.role?("testadmin")) then %>
                    <li><%= link_to 'Itests', :controller => :itests, :action => :index %></li>
                <% end %>
            </ul>
        </li>
    </ul>

<% end %>

    • :posts,:action=>:index%>
    • :itests,:action=>:index%>
真正有趣的是,如果我删除
块,只留下一个裸露的
,如果。。。结束
block,它可以工作。此外,它适用于没有三个管理员角色中任何一个的用户

但是在
    ..
块中,除了HTML、引导样式和一些到其他控制器的内联ruby链接之外,没有其他内容

这是如何打破Deviate的“编辑配置文件”功能的?

查看以下问题:

基本上,您位于
设备
命名空间中,必须使用路径帮助程序:

<%= link_to 'Posts', posts_path %>

或:

”/posts',:action=>:index%>

附加信息:如果我删除内部ul的第一个li,错误消息将变为“无路由匹配{:controller=>“designe/itests”}”,因此两个链接正在干扰designe。。。但是如何以及为什么呢?非常感谢,巴托斯,它救了我一天
<%= link_to 'Posts', :controller => '/posts', :action => :index %>