【问题标题】:Strange error blocks users from editing devise profile奇怪的错误阻止用户编辑设计配置文件
【发布时间】:2013-12-25 21:26:04
【问题描述】:

我在 Rails 3.2.13 中使用 devise、omniauth 和 cancan 开发了一个应用程序。在我开始使用 cancan 实现授权之前,这一切都运行良好。更有趣的是,cancan 本身就像 charm 一样,但在编辑 devise 提供的用户配置文件时会产生错误。如果 cancan 完全做到这一点,我真的不确定。

错误信息是:

No route matches {:controller=>"devise/posts"}

我有一个帖子控制器,但这与设计无关。这是故事中最奇怪的部分。

我成功地本地化了生成它的位置,但我无法弄清楚问题的原因是什么以及如何解决它。所以我在我的 application.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 %>

真正有趣的是,如果我删除&lt;ul&gt;...&lt;/ul&gt; 块,只留下一个裸露的if ... end 块,它就可以工作。此外,它适用于不具有三个管理员角色中的任何一个的用户。

但是在&lt;ul&gt;...&lt;/ul&gt; 块中,除了 HTML、Bootstrap 样式和一些到其他一些控制器的内联 ruby​​ 链接之外什么都没有。

这如何破坏设计的“编辑配置文件”功能?

【问题讨论】:

  • 附加信息:如果我删除内部 ul 的第一个 li,错误消息将更改为“No route matches {:controller=>"devise/itests"}”,因此这两个链接会干扰设计...但是如何以及为什么?

标签: ruby-on-rails ruby devise ruby-on-rails-3.2 cancan


【解决方案1】:

看看这个问题:Rails No route matches {:controller=>"devise/products"}

基本上你在device命名空间,你必须使用路径助手:

<%= link_to 'Posts', posts_path %>

或:

<%= link_to 'Posts', :controller => '/posts', :action => :index %>

【讨论】:

  • 非常感谢,Bartosz,它拯救了我的一天。 :)
猜你喜欢
  • 2014-11-05
  • 2017-06-18
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
  • 2016-05-24
  • 1970-01-01
  • 2012-04-17
相关资源
最近更新 更多