我正在使用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"
答案 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>
如上面的链接所述,使用命名资源路由被认为是“首选”,这样,如果资源路由发生变化,则无需手动更新链接。