Ruby on rails 奇怪的错误会阻止用户编辑设备配置文件
我在Rails 3.2.13中有一个应用程序正在开发中,其中包括Desive、omniauth和cancan。在我开始使用cancan实施授权之前,一切都很顺利。更有趣的是,cancan本身就像charm一样工作,但在编辑Desive提供的用户配置文件时会产生错误。如果坎坎真的这么做了,我真的不确定 错误消息是: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没有任何联系。这是故事中最奇怪的部分
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 %>