你能帮我把这条路线转换成rails 3吗?

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)

我尝试过的每一种方式

  • 本地主机:3000/mebay /广告/ 3
  • 本地主机:3000 /广告/ 3
  • 本地主机:3000 /演出/广告/ 3
  • 本地主机:3000/mebay /显示/广告/ 3

同样的错误仍然是"路由错误.没有路由匹配......"

Jak*_*mpl 5

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