Rails 4 新人:路由错误 -
Rails 4 newbe : Routing Error -
我对 rails 很陌生。不知道如何解决它。我什至无法启动一个简单的 rails 应用程序!
Environment:
Windows 7
Ruby 2.1.0
Rails 4.2.3
首先:我运行生成命令
D:\railprojects\blog>rails 生成控制器页面索引
routes.rb
Rails.application.routes.draw do
get 'pages/index'
end
pages_controller.rb
class PagesController < ApplicationController
def index
end
end
index.html.erb
<h1>Pages#index</h1>
<p>Find me in app/views/pages/index.html.erb</p>
我收到以下错误。
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
改为-得到'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
你应该点
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
尝试
localhost:3000/pages/index
或者,如果您想使用此 localhost:3000/页面更改路线进入索引页面
resources :pages
首先,不要用Windows在Rails中开发...你会很头疼的。相信我。
如果你不想安装Linux(比如ubuntu),你可以使用vagrant(https://www.vagrantup.com/)。
关于您的错误,您定义了 pages/index
路由,但您正在尝试访问 pages
路由。
你能做的就是定义pages
路线,例如:
get 'pages', to: 'pages#index'
这样,您就可以通过以下方式访问您的页面:http://localhost:3000/pages
这会将您转到 PagesController
和 index
操作。
关于另一个错误:ExecJS::ProgramError in Pages#index Showing ...
- 您需要 javascript 运行时,例如:安装了 NodeJS - https://nodejs.org/。
我对 rails 很陌生。不知道如何解决它。我什至无法启动一个简单的 rails 应用程序!
Environment:
Windows 7
Ruby 2.1.0
Rails 4.2.3
首先:我运行生成命令
D:\railprojects\blog>rails 生成控制器页面索引
routes.rb
Rails.application.routes.draw do
get 'pages/index'
end
pages_controller.rb
class PagesController < ApplicationController
def index
end
end
index.html.erb
<h1>Pages#index</h1>
<p>Find me in app/views/pages/index.html.erb</p>
我收到以下错误。
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
改为-得到'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
你应该点
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
尝试
localhost:3000/pages/index
或者,如果您想使用此 localhost:3000/页面更改路线进入索引页面
resources :pages
首先,不要用Windows在Rails中开发...你会很头疼的。相信我。
如果你不想安装Linux(比如ubuntu),你可以使用vagrant(https://www.vagrantup.com/)。
关于您的错误,您定义了 pages/index
路由,但您正在尝试访问 pages
路由。
你能做的就是定义pages
路线,例如:
get 'pages', to: 'pages#index'
这样,您就可以通过以下方式访问您的页面:http://localhost:3000/pages
这会将您转到 PagesController
和 index
操作。
关于另一个错误:ExecJS::ProgramError in Pages#index Showing ...
- 您需要 javascript 运行时,例如:安装了 NodeJS - https://nodejs.org/。