代码之家  ›  专栏  ›  技术社区  ›  Khoga

Rails4新手:路由错误-

  •  1
  • Khoga  · 技术社区  · 9 年前

    我对铁路很陌生。不知道如何修复。我甚至无法启动一个简单的rails应用程序!

    Environment:
        Windows 7
        Ruby 2.1.0
        Rails 4.2.3
    

    首先:我运行了generate命令

    D: \railprojects\blog>rails生成控制器Pages索引

    路由.rb

        Rails.application.routes.draw do
      get 'pages/index'
    
    end
    

    页面_控制器.rb

    class PagesController < ApplicationController
      def index
      end
    end
    

    索引html.erb

    <h1>Pages#index</h1>
    <p>Find me in app/views/pages/index.html.erb</p>
    

    我遇到以下错误。

    http://127.0.0.1:3000/pages

    Routing Error
    No route matches [GET] "/pages"
    
    Rails.root: D:/railprojects/blog
    
    Application Trace | Framework Trace | Full Trace
    Routes
    
    Routes match in priority from top to bottom
    
    Helper  HTTP Verb   Path    Controller#Action
    Path / Url          
    pages_index_path    GET /pages/index(.:format)  pages#index
    Request
    
    Parameters:
    
    None
    

    截图 http://i.stack.imgur.com/06W5e.jpg

    请帮忙。如果你需要更多信息,请告诉我。

    localhost:3000/pages/index

    更改为-get“pages#index”

    Routing Error
    No route matches [GET] "/pages"
    
    Rails.root: D:/railprojects/blog
    
    Application Trace | Framework Trace | Full Trace
    Routes
    
    Routes match in priority from top to bottom
    
    You don't have any routes defined!
    
    Please add some routes in config/routes.rb.
    For more information about routes, please see the Rails guide Rails Routing from the Outside In.
    Helper  HTTP Verb   Path    Controller#Action
    Path / Url          
    

    将其更改为-resources:pages

    ExecJS::ProgramError in Pages#index
    Showing D:/railprojects/blog/app/views/layouts/application.html.erb where line #6 raised:
    
    TypeError: Object doesn't support this property or method
    Rails.root: D:/railprojects/blog
    
    Application Trace | Framework Trace | Full Trace
    app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb__2066577970_70340560'
    Request
    
    Parameters:
    
    None
    Toggle session dump
    Toggle env dump
    GATEWAY_INTERFACE: "CGI/1.1"
    HTTP_ACCEPT: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
    HTTP_ACCEPT_ENCODING: "gzip, deflate, sdch"
    HTTP_ACCEPT_LANGUAGE: "en-US,en;q=0.8,bn;q=0.6"
    REMOTE_ADDR: "127.0.0.1"
    REMOTE_HOST: "127.0.0.1"
    SERVER_NAME: "localhost"
    SERVER_PROTOCOL: "HTTP/1.1"
    
    
    
    
    Rails.application.routes.draw do
      get 'pages', to: 'pages#index'
    end
    
    
    
    ExecJS::ProgramError in Pages#index
    Showing D:/railprojects/blog/app/views/layouts/application.html.erb where line #6 raised:
    
    TypeError: Object doesn't support this property or method
    Rails.root: D:/railprojects/blog
    
    Application Trace | Framework Trace | Full Trace
    app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb__2066577970_70340560'
    Request
    
    Parameters:
    
    None
    Toggle session dump
    Toggle env dump
    GATEWAY_INTERFACE: "CGI/1.1"
    HTTP_ACCEPT: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
    HTTP_ACCEPT_ENCODING: "gzip, deflate, sdch"
    HTTP_ACCEPT_LANGUAGE: "en-US,en;q=0.8,bn;q=0.6"
    REMOTE_ADDR: "127.0.0.1"
    REMOTE_HOST: "127.0.0.1"
    SERVER_NAME: "localhost"
    SERVER_PROTOCOL: "HTTP/1.1"
    Response
    
    Headers:
    
    None
    

    已更改为

     Rails.application.routes.draw do
          get 'pages', to: 'pages#index'
        end  
    

    /

    ExecJS::ProgramError in Pages#index
    Showing D:/railprojects/blog/app/views/layouts/application.html.erb where line #6 raised:
    
    TypeError: Object doesn't support this property or method
    Rails.root: D:/railprojects/blog
    
    Application Trace | Framework Trace | Full Trace
    app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb__2066577970_70340560'
    Request
    
    Parameters:
    
    None
    Toggle session dump
    Toggle env dump
    GATEWAY_INTERFACE: "CGI/1.1"
    HTTP_ACCEPT: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
    HTTP_ACCEPT_ENCODING: "gzip, deflate, sdch"
    HTTP_ACCEPT_LANGUAGE: "en-US,en;q=0.8,bn;q=0.6"
    REMOTE_ADDR: "127.0.0.1"
    REMOTE_HOST: "127.0.0.1"
    SERVER_NAME: "localhost"
    SERVER_PROTOCOL: "HTTP/1.1"
    Response
    
    Headers:
    
    None
    
    3 回复  |  直到 9 年前
        1
  •  1
  •   Sajjad Murtaza    9 年前

    尝试

    localhost:3000/pages/index
    

    或者如果您想使用localhost:3000/pages更改路由进入索引页

    resources :pages
    
        2
  •  0
  •   WeezHard    9 年前

    首先,不要使用Windows在Rails中开发……你会很头疼。相信我。

    如果你不想安装Linux(如ubuntu),你可以使用流浪者( https://www.vagrantup.com/ ).

    关于您的错误,您定义了 pages/index 路线,但您正在尝试访问 pages 路线

    你能做的就是定义 路线,如:

    get 'pages', to: 'pages#index'
    

    有了它,您可以通过以下方式访问您的页面: http://localhost:3000/pages 它会把你送到 PagesController index 行动

    关于另一个错误:Pages#index中的ExecJS::ProgramError正在显示。。。

        3
  •  0
  •   Paweł Dawczak    9 年前

    你应该指出

    http://localhost:3000/pages/index
    

    在浏览器中执行正确的操作。

    这是因为您的路由配置:

    get 'pages/index'
    

    如果你想指出 /pages ,您必须将其重新配置为:

    get 'pages', to: 'pages#index'
    

    您可以找到有关Rails路由的更多信息 here ;

    祝你好运

    更新

    的全部内容 config/routes.rb 应该看起来像:

    Rails.application.routes.draw do
      get 'pages', to: 'pages#index'
    end