私はいくつかのウェブサイトとの質問を読みますが、すべてが一つのサイトを除き、これまでの私のレベルを超えていた:私はRailsの2のために作られた、これまでそれが続けられていますヘッドファーストレールに従うことをしようとしているこのルートをレール3に変換できますか?
http://markconnell.co.uk/posts/2010/02/rails-3-routing-examples
十分に十分です。私はこれまでのコンバージョンを見つけることができました。これはインストール後に私を悩ませた最初の場所です。
それは読まなければならないことの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
まずは最初の行は
Mebay::Application.routes.draw do
だから私の最初の試みであるために、私のroutes.rbをファイルのデフォルト読み:
: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
それは私がこれを試み失敗した場合3210
Mebay::Application.routes.draw do'
map '/ads/:id' => 'ads#index'
end
次に同じことを試みましたが、マップを追加しました。最初の行に。
そして最後に、私はこれにすべてを変えてみました:これらの
ActionController::Routing::Routes.draw do |map|
map '/ads/:id' => 'ads#index'
end
どれもかかわらず、働いていません。誰かがここで私を助けてください、私は間違って何をしているのか分からないでしょうか。私は別の本、HartlのRuby On Rails 3を持っていますが、索引ではRoutes上に何も表示しないので、そこをどこで調べるかも分かりません。
ご協力いただきありがとうございます!
// EDIT - 私もそれを読んでみました「/広告/」:idは内部の引用符のようになります。ID思考は、おそらくそれはそれはなぜ私には意味がありませんので、間違いです。
// EDIT 2からこれが何であるかを熊手ルートを返します。
WARNING: 'require 'rake/rdoctask'' is deprecated. Please use 'require 'rdoc/task' (in RDoc 2.4.2+)' instead.
at /Users/Dennis/.rvm/gems/[email protected]/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/[email protected]/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
エラーメッセージ:
ルーティングエラー
Noルートの試合 "/広告/ 3"
// EDIT 3からこれは私の2コントローラのファイルがどのように見えるかです:
ads_controller:
class AdsController < ApplicationController
end
がapplication_controller: -
class ApplicationController < ActionController::Base
protect_from_forgery
end
// EDIT 4 ads_controllerで試しました。rbファイル: class AdsController < ApplicationController def show; エンド エンドも同じファイルで試してみました
:
class AdsController < ApplicationController
end
def show;
end
そして、私はに行くしようとした各方法
- はlocalhost:3000/mebay /広告/ 3
- はlocalhost:3000 /広告/ 3
- はlocalhost:3000 /ショー/広告/ 3
- はlocalhost:3000/MEベイ/ショー/広告/ 3
同じエラーまだ「ルーティングエラーが発生しました。 NOルートは
うわー、私はその地図がマッチ・オン・ザ・マーク・コンネル・ウェブサイトに切り替える必要がありました。それはただの不注意だった。ありがとう、私はその記事を今読んでいる! – Ryan
私はちょうど仕事から家に帰ってみました。それはうまくいかなかった。おそらく、私は正しいページを指していないでしょう。私はしようとしました:localhost:3000/ads/3 /そしておそらくlocalhost:3000/mebay/ads/3 /どちらもどちらも働かなければならないと考えました。その他の提案はありますか? – Ryan
この種類は、コントローラの名前が何であるかによって異なります。上記のシンタックスは実際にはショートカットですが、実際には 'match 'ads /:id'、:controller => AdsController、action =>" show "' AdsController'はコントローラの名前と同じものを試すことができます。また、どんなエラーが出ていますか?便利なやり方は 'rake routes'を実行して、認識されているすべてのルートをリストすることです。 –