【问题标题】:Routing error with devise {:controller=>"devise/static", :action=>"about"}设计路由错误 {:controller=>"devise/static", :action=>"about"}
【发布时间】:2012-01-18 11:02:27
【问题描述】:

我的设计有问题。每次我尝试调用应该由设计处理的 Url(例如 http://localhost:3000/users/sign_up)时,都会出现以下错误:

No route matches {:controller=>"devise/static", :action=>"about"}

希望有人可以帮助我!


routes.rb

devise_for :users

get "pages/contact"
get "pages/imprint"
get "pages/about"

root :to => "pages#about"

我做了什么:

在 gemfile 中添加了gem 'devise'

bundle install 
rails generate devise:install
rails generate devise User
rake db:migrate

rake 路线

        new_user_session GET    /users/sign_in(.:format)       {:action=>"new", :controller=>"devise/sessions"}
            user_session POST   /users/sign_in(.:format)       {:action=>"create", :controller=>"devise/sessions"}
    destroy_user_session DELETE /users/sign_out(.:format)      {:action=>"destroy", :controller=>"devise/sessions"}
           user_password POST   /users/password(.:format)      {:action=>"create", :controller=>"devise/passwords"}
       new_user_password GET    /users/password/new(.:format)  {:action=>"new", :controller=>"devise/passwords"}
      edit_user_password GET    /users/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"}
                         PUT    /users/password(.:format)      {:action=>"update", :controller=>"devise/passwords"}
cancel_user_registration GET    /users/cancel(.:format)        {:action=>"cancel", :controller=>"devise/registrations"}
       user_registration POST   /users(.:format)               {:action=>"create", :controller=>"devise/registrations"}
   new_user_registration GET    /users/sign_up(.:format)       {:action=>"new", :controller=>"devise/registrations"}
  edit_user_registration GET    /users/edit(.:format)          {:action=>"edit", :controller=>"devise/registrations"}
                         PUT    /users(.:format)               {:action=>"update", :controller=>"devise/registrations"}
                         DELETE /users(.:format)               {:action=>"destroy", :controller=>"devise/registrations"}
           pages_contact GET    /pages/contact(.:format)       {:controller=>"pages", :action=>"contact"}
           pages_imprint GET    /pages/imprint(.:format)       {:controller=>"pages", :action=>"imprint"}
             pages_about GET    /pages/about(.:format)         {:controller=>"pages", :action=>"about"}
                    root        /                              {:controller=>"pages", :action=>"about"}

Rails 版本: 导轨 3.1.3


PagesController

class PagesController < ApplicationController
  def contact
  end

  def imprint
  end

  def about
  end

end

【问题讨论】:

  • 我已按照您在 Rails 3.1.3 上的步骤操作,但无法重现您遇到的问题。这似乎是设计干扰您的非设计路线的问题,但我不明白为什么会发生这种情况。您的 PagesController 中是否有任何奇怪的事情发生?
  • 我添加了页面控制器的内容(这正是 rails g 命令生成的内容)。我的 Rails 版本也是 3.1.3...
  • 奇怪,我刚刚发现问题可能是。在 application.html.erb... 我有三个指向 PagesController 中页面的链接... :pages, :action => :imprint %> 如果我删除它们错误消失了。但为什么呢?
  • This guy 似乎也有同样的问题,解决方法就是改用命名路由。然而,看看 Devise 究竟发生了什么导致这种行为会很有趣。
  • 我有类似的问题stackoverflow.com/questions/14226107/…,但还没有找到解决方案

标签: ruby-on-rails ruby-on-rails-3.1 devise


【解决方案1】:

当我更改 link_to 方法时,我的错误已修复。

在我的标题中我有:

<%= link_to "Info", :controller => :info %>

当我把它切换到:

<%= link_to "Info", "/info" %>

错误消失了!

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-25
  • 2012-07-10
相关资源
最近更新 更多