Rya*_*yan 0 routes ruby-on-rails ruby-on-rails-3
我读了一些网站和问题,但除了一个网站外,所有这些都远远超出了我的水平:
http://markconnell.co.uk/posts/2010/02/rails-3-routing-examples
我正在尝试使用为Rails 2制作的Head First Rails,到目前为止它已经进展顺利了.到目前为止,我已经能够找到转换,这真的是自安装以来第一个让我感到困惑的地方.
它在config/routes.rb文件中说它应该读取:
ActionController::Routing::Routes.draw do |map|
map.connect '/ads/:id', :controller=>'ads', :action=>'show'
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end
Run Code Online (Sandbox Code Playgroud)
首先关闭我的routes.rb文件默认第一行
Mebay::Application.routes.draw do
Run Code Online (Sandbox Code Playgroud)
所以我的第一次尝试是:
Mebay::Application.routes.draw do
map.connect '/ads/:id', :controller=>'ads', :action=>'show'
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end
Run Code Online (Sandbox Code Playgroud)
当失败时我尝试了这个:
Mebay::Application.routes.draw do'
map '/ads/:id' => 'ads#index'
end
Run Code Online (Sandbox Code Playgroud)
然后我尝试了相同的东西,但添加| map | 到第一行.
最后,我尝试将其全部更改为:
ActionController::Routing::Routes.draw do |map|
map '/ads/:id' => 'ads#index'
end
Run Code Online (Sandbox Code Playgroud)
这些都没有奏效.有人可以帮帮我,我不知道我做错了什么.我有另一本书,Hartl的Ruby On Rails 3,但在索引中它甚至没有在路线上显示任何东西,所以甚至不知道在哪里看.
感谢您提供的任何帮助!
//编辑 -我也尝试过阅读'/ ads /':id认为这可能是一个错误,因为它对我来说没有意义:id会在引号内.
//编辑2 -这是Rake Routes返回的内容:
WARNING: 'require 'rake/rdoctask'' is deprecated. Please use 'require 'rdoc/task' (in RDoc 2.4.2+)' instead.
at /Users/Dennis/.rvm/gems/ruby-1.9.2-p318@rails3tutorial/gems/rake-0.9.2.2/lib/rake/rdoctask.rb
WARNING: Global access to Rake DSL methods is deprecated. Please include
... Rake::DSL into classes and modules which use the Rake DSL methods
WARNING: DSL method Mebay::Application#task called at /Users/Dennis/.rvm/gems/ruby-1.9.2-p318@rails3tutorial/gems/railties-3.0.1/lib/rails/application.rb:214:in `initialize_tasks'
/ads/:id(.:format) {:controller=>"ads", :action=>"show"}
/:controller/:action/:id(.:format)
/:controller/:action/:id.:format
Run Code Online (Sandbox Code Playgroud)
错误信息:
路由错误
没有路线匹配"/ ads/3"
//编辑3 -这是我的2个控制器文件的样子:
ads_controller:
class AdsController < ApplicationController
end
Run Code Online (Sandbox Code Playgroud)
application_controller:
class ApplicationController < ActionController::Base
protect_from_forgery
end
Run Code Online (Sandbox Code Playgroud)
//编辑4 -
尝试在ads_controller.rb文件中:class AdsController <ApplicationController def show; 结束
也尝试在同一个文件中:
class AdsController < ApplicationController
end
def show;
end
Run Code Online (Sandbox Code Playgroud)
我尝试过的每一种方式
同样的错误仍然是"路由错误.没有路由匹配......"
ActionController::Routing::Routes.draw do
match '/ads/:id' => 'ads#show'
match ':controller/:action/:id'
match ':controller/:action/:id.:format'
end
Run Code Online (Sandbox Code Playgroud)
我完全推荐阅读文档:http://apidock.com/rails/ActionDispatch/Routing