eck*_*kza 0 ruby routing routes ruby-on-rails
我正在开发一个简单的Rails应用程序,目前有四个页面 - Home,About,Contact和Search Results.我routes.rb看起来像这样:
IdealmSite::Application.routes.draw do
root:to => 'main_pages#home'
match '/about', :to => 'main_pages#about'
match '/contact', :to => 'main_pages#contact'
match '/search_results', :to => 'main_pages#search_results'
end
Run Code Online (Sandbox Code Playgroud)
一切正常,直到我尝试使用命名路由作为link_to函数的参数,如下所示:
<%= link_to "Home", home_path %>
Rails服务器的输出说明了这一点:
ActionView::Template::Error (undefined local variable or method `home_path' for #<#<Class:0x00000100eb2200>:0x00000100eaef38>):
20: <div id="left">
21: <div class="verticalmenu">
22: <ul>
23: <li><%= link_to "Home", home_path %></li>
24: <li><%= link_to "About", '#' %></li>
25: <li><%= link_to "Contact", '#' %></li>
26: </ul>
app/views/layouts/application.html.erb:23:in `_app_views_layouts_application_html_erb___584831540324030083_2155170260__1382439999518380141'
Rendered /Users/idealm/.rvm/gems/ruby-1.9.2-p180/gems/actionpack-3.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.1ms)
Rendered /Users/idealm/.rvm/gems/ruby-1.9.2-p180/gems/actionpack-3.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (2.5ms)
Rendered /Users/idealm/.rvm/gems/ruby-1.9.2-p180/gems/actionpack-3.0.1/lib/action_dispatch/middleware/templates/rescues/template_error.erb within rescues/layout (7.1ms)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
创建路径时,它会为您创建帮助程序.
root => 'main_pages#home'
Run Code Online (Sandbox Code Playgroud)
表示您现在可以在应用程序中使用"root_path"和"root_url".如果你想拥有home_path,你必须这样做:
match '/home' => 'main_pages#home', :as => :home
Run Code Online (Sandbox Code Playgroud)
那:作为选项是创建助手whatever_path和whatever_url.
请记住,您可以看到所有路线:
rake routes
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3740 次 |
| 最近记录: |