2012-04-03 9 views
0

私はいくつかのウェブサイトとの質問を読みますが、すべてが一つのサイトを除き、これまでの私のレベルを超えていた:私は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ルートは

答えて

5
ActionController::Routing::Routes.draw do 
    match '/ads/:id' => 'ads#show' 
    match ':controller/:action/:id' 
    match ':controller/:action/:id.:format' 
end 

「...マッチしていない私は徹底的にドキュメントを読んでお勧めします:http://apidock.com/rails/ActionDispatch/Routing

+0

うわー、私はその地図がマッチ・オン・ザ・マーク・コンネル・ウェブサイトに切り替える必要がありました。それはただの不注意だった。ありがとう、私はその記事を今読んでいる! – Ryan

+0

私はちょうど仕事から家に帰ってみました。それはうまくいかなかった。おそらく、私は正しいページを指していないでしょう。私はしようとしました:localhost:3000/ads/3 /そしておそらくlocalhost:3000/mebay/ads/3 /どちらもどちらも働かなければならないと考えました。その他の提案はありますか? – Ryan

+0

この種類は、コントローラの名前が何であるかによって異なります。上記のシンタックスは実際にはショートカットですが、実際には 'match 'ads /:id'、:controller => AdsController、action =>" show "' AdsController'はコントローラの名前と同じものを試すことができます。また、どんなエラーが出ていますか?便利なやり方は 'rake routes'を実行して、認識されているすべてのルートをリストすることです。 –

1

あなたがRailsの3を使用している場合は、Railsの2チュートリアルを行うにはしたくない良いレールの多くがあります。そこに3つのチュートリアルうちは。ルートに関するご質問については、あなたがそれを把握に役立つかもしれない、それ以下のブログ記事を参照してください。

http://gregmoreno.wordpress.com/2010/08/12/rails-3-upgrade-part-2-routes/

+0

私はそれを見ました、私はそれを理解していませんでした。そして本のように - これは市場で最も簡単なものです。 Hartlの本は第2章の後に私を失ってしまいました。私はTestsに立ち往生しましたので、彼が推薦したようにそれらをスキップしてみましたが、その後はその章に固執しました。 3.0のためのヘッド・ファースト・レールがあったら、それを手に入れます。 :\あなたは、バックエンドの経験もIDEの経験もない人のためのチュートリアルの代わりの提案がありますか?私がやったことは、HTML、CSS、Javascriptだけです。 – Ryan

+0

本当に良い本は「レール付きアジャイルウェブ開発」、その唯一の$ 20ishと初心者のための本当に良い出発点です。 http://pragprog.com/book/rails2/agile-web-development-with-rails – Norto23

+0

私はここ2週間前にそれを得ることを考えていて、私が持っている本のいずれよりも進んでいると言われた私はヘッド・ファーストに固執するか、Railsで始める前にPineによるRubyのプログラミングに回帰することを提案しました。 – Ryan

1

これはあなたのルートファイルを作ってみましょう。章からそれをやっている間、私は同じ問題を抱えていましたヘッド・ファースト・ラils。しかし、これは私もその本を使用していますが、私はこれが動作するようになったレール2とレール

3の間の差を通過してくれ

Mebay::Application.routes.draw do 

     controller 'ads' do 
       match 'ads/:id' => :show 
     end 

    end 
2

のためにそれを解決しました。

resources :ads 

キーはあなたのroutes.rbをファイルにのみ適切な場所にそのリソースを送信しているということです。routes.rbをファイルですべてを行う必要がdoと端部との間にこれを追加することです。次の部分が少し後、その章であるインデックスを追加して

#Get /ads/1 
#Get /ads/1.json 

    def show 
    @ad = Ad.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.json { render json: @ad } 
    end 
    end 

:見て次の場所は、あなたがこれを追加することになるでしょうads_controller.rbファイルです。あなたはその上で、これを追加することをお勧めします:

# GET /ads 
# GET /ads.json 
def index 
    @ads = Ad.all 

     respond_to do |format| 
      format.html # index.html.erb 
      format.json { render json: @ad } 
     end 
     end 

基本的には、第1章routes.rbをし、コントローラのファイルを見ればあなたは足場がそのようなレール3のアプリを設定していることがわかります。

<%= stylesheet_link_tag "application", :media => "default.css" %> 
:私を混同もう一つは、私はこのように見えるように/アプリ/資産/スタイルシート編集application.html.erbに入れるとスタイルシートのリンクを設定することで、仕事にはJavaScriptを取得することができるだけでした

お楽しみください

関連する問題