2012-04-06 3 views
1

ich Internationalisierung umzusetzen versuchen wie in Railscasts gesehen, und jedes Mal, wenn ich meine Umfang Routen mir den Fehler DateiImmer, wenn ich Umfang die routes.rb ich einen Fehler in meiner Rails-Anwendung

No route matches [GET] "/" 

oder

Fehler
missing :controller 
config/routes.rb:6:in `block (2 levels) in <top (required)>' 
config/routes.rb:5:in `block in <top (required)>' 
config/routes.rb:1:in `<top (required)>' 

Hier ist meine routes.rb Datei

Jensenlocksmithing::Application.routes.draw do 
    get "log_out" => "sessions#destroy", as: "log_out" 
    get "log_in" => "sessions#new", as: "log_in" 

    scope ":locale" do 
    get "site/home" 
    get "site/about_us" 
    get "site/faq" 
    get "site/discounts" 
    get "site/services" 
    get "site/contact_us" 
    get "site/admin" 
    get "site/posts" 

    root :to => 'site#home' 
    end 

    #match '*path', to: redirect("/#{I18n.default_locale}/%{path}") 
    #match '', to: redirect("/#{I18n.default_locale}") 

    match "/savesort" => 'site#savesort' 

    resources :users 
    resources :abouts 
    resources :sessions 
    resources :coupons 
    resources :monthly_posts 
    resources :reviews 

    resources :categories do 
    collection { post :sort } 
     resources :children, :controller => :categories, :only => [:index, :new, :create, :new_subcategory] 
    end 
    resources :products do 
    member do 
     put :move_up 
     put :move_down 
    end 
    end 
    resources :faqs do 
    collection { post :sort } 
    end 
end 

Also, warum, wenn ich den Umfang hinzufügen ": locale" end tun Linie bekomme ich diese Fehler? Es funktioniert alles ohne. Lass es mich wissen, wenn du noch mehr Code sehen musst. Danke Jungs

bearbeiten

In meiner Anwendung Controller habe ich folgendes:

private 

def default_url_options(options = {}) 
    {locale: I18n.locale} 
end 

Enthält diese das gleiche tun wie die Raute in den Routen vorbei?

Edit 2

änderte ich meine Route zu den folgenden, wie in diesem Kern zu sehen. https://gist.github.com/2322844

Warum wird der ID-Teil zur Get-Route hinzugefügt? wie dies

about_us_site GET /sites/:id/about_us(.:format) 

sollte es nicht

so etwas wie dies hinzugefügt
about_us_site GET /sites/about_us(.:format) 

Auch meine ganze routes.rb Datei und die Routen für weitere Informationen erzeugt.
https://gist.github.com/2322861

Antwort für alle Interessierten:

Ich änderte

get "site/home" 
    get "site/about_us" 
    get "site/faq" 
    get "site/discounts" 
    get "site/services" 
    get "site/contact_us" 
    get "site/admin" 
    get "site/posts" 

    root :to => 'site#home' 

zu

resources :sites, except: [:new, :edit, :index, :show, :update, :destroy, :create] do 
    collection do 
    get :home 
    get :about_us 
    get :faq 
    get :discounts 
    get :services 
    get :contact_us 
    get :admin 
    get :posts 
end 

Ende

Antwort

2

Passing i na Hash sollten Sie Ihre Routen beheben:

scope "(:locale)", :defaults => { :locale => "en" } do 
    resources :sites 
end 

Auch Sie können eine SitesController berücksichtigen wollen Erstellen und geben es members:

resources :sites do 
    member do 
    get :about_us # Points to /sites/about_us 
    end 
end 
+0

Sehen Sie sich meine bearbeiten, sollten Die Funktion default_url_options macht dasselbe? – ruevaughn

+1

Ich bin mir eigentlich nicht sicher. Was ist der Output von 'Rake-Routen'? –

+0

Ich habe überprüft, dass es tatsächlich den Standard in meinem Anwendungscontroller hinzufügt. Ich habe meine Routen zu den Standards wie definiert geändert, aber es fügt den Routen die ID hinzu. Sehen Sie meine Bearbeitung für Details, danke nochmal – ruevaughn