设计和路由错误

时间:2011-04-29 09:47:01

标签: ruby-on-rails devise

我正在使用Devise对用户进行身份验证,并在注册和登录页面时收到以下错误

No route matches {:action=>"search", :controller=>"devise/home"}

显然是由

引起的
<%= link_to "Search", url_for(:controller => "home", :action => "search")

在layouts / application.html.erb

设置绝对基本,这是routes.rb:

get "home/search"
devise_for :users
root :to => "home#index"

1 个答案:

答案 0 :(得分:1)

来自http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

  

使用旧版时要小心   参数样式,作为额外的文字   需要哈希:

link_to "Articles", { :controller => "articles" }, :id => "news", :class => "article"
# => <a href="/articles" class="article" id="news">Articles</a> 
  

离开哈希是错误的   链接:

link_to "WRONG!", :controller => "articles", :id => "news", :class => "article"
# => <a href="/articles/index/news?class=article">WRONG!</a>

如上面的链接所述,使用命名资源路由被认为是“首选”,这样,如果资源路由发生变化,则无需手动更新链接。