2012-04-04 3 views
1

私はRyan Bates railscasts I18n Internationalizationをフォローしており、問題/質問にぶつかっています。Rails 3アプリに英語/スペイン語を追加するためにroutes.rbを診断する必要があります

私は、私のリンクに言語を設定するには、このような何かしようとしています

:私は私のルートファイルでこれを定める午前スペイン語

の英語

ため

http://localhost:3000/en/site/services

http://localhost:3000/es/site/servicesをここ:

routes.rb

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" 
    get "categories/new_subcategory" 
    get "categories/edit_subcategory" 
end 

と私はすくいルートを実行したり、ナビゲートしてみたときに、私は、自分のアプリケーションのコントローラ

before_filter :set_locale 

private 
    def set_locale 
    I18n.locale = params[:locale] if params[:locale].present? 
end 

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

そして、私の意見/レイアウト/ application.html.erb

<%= link_to_unless_current "English", locale: "en" %> | 
<%= link_to_unless_current "Spanish", locale: "es" %> 

中に持っています私が得るURLに

C:\www\project>rake routes 
    rake aborted! 
    missing :controller 

私はかなり新しいルートです、誰かが私を助けることができますか? /問題を見て/説明する? ありがとうございます。

答えて

1

投稿したすべてのコードを新しいレールアプリに貼り付けただけです。私の推測では、あなたのroutes.rbファイルに他のルートがあり、そのうちの1つが無効です。あなたはこのように出てくる掲示ルートは:

[email protected]:~/projects/testproj$ rake routes 
site_home GET /:locale/site/home(.:format)    :locale/site#home 
site_about_us GET /:locale/site/about_us(.:format)  :locale/site#about_us 
site_faq GET /:locale/site/faq(.:format)     :locale/site#faq 
site_discounts GET /:locale/site/discounts(.:format)  :locale/site#discounts 
site_services GET /:locale/site/services(.:format)  :locale/site#services 
site_contact_us GET /:locale/site/contact_us(.:format) :locale/site#contact_us 
site_admin GET /:locale/site/admin(.:format)    :locale/site#admin 
site_posts GET /:locale/site/posts(.:format)    :locale/site#posts 
categories_new_subcategory GET /:locale/categories/new_subcategory(.:format) :locale/categories#new_subcategory 
categories_edit_subcategory GET /:locale/categories/edit_subcategory(.:format) :locale/categories#edit_subcategory 

あなたは問題があることをがすべきあなたのような何かができるかもしれませんが。リソース指向アーキテクチャーについて読んでおくことを強くお勧めします。あなたがそれをよく理解するまで、Railsを奇妙な形に曲げることはお勧めしません。 Railsのルーティングが基づいていることと、routes.rbで何が行われているのかは、あなたが理解するまではあまり意味がありません。

Leonard RichardsonとSam RubyのWebサービスは、インターネット上で十分に利用可能であり、わかりやすいものがあります。 私はそれが助けてくれることを願っています。

+0

あなたは正しいですが、私は他のルートを持っており、実際にはそれを絞り込んでいます。私は安らかなルーティングをもっと理解する必要があります、私はその本をチェックアウトします。また、ルーティングに関するRuby on Railsのガイドを再度読む予定です。より受け入れ可能なバージョン: リソースサイト:そしてメンバールートの束を追加しますか?私は自分のサイトのコントローラにはCRUDは必要なく、静的なアクション(家庭、製品など)のみを必要とします。それがベストプラクティスですか? – ruevaughn

+0

私は前に "サイト"コントローラのパスを下ってしまい、動作させることができます。私はこれらの "静的な"ページを更新可能にしたかったので、Rails(静的なページなどの世話をするためにSinatraアプリケーションをマウントするのではなく)で立ち往生し、サイト全体でI18nの問題に対処しなければならないことを知っています。最終的に私は、 "about"、 "contact"、 "home"タイプのものを持つ組織を表すコントローラを、データベース内に単独で格納された単一の組織のプロパティとして持っていました。他のすべてはRails CRUDでした。それはうまくいったが、私はいつもよりよい方法があるのか​​疑問に思っていた。 – mikewilliamson

+0

まあまあ私の状況ですが、私はまた、静的なページを更新可能にしたいと思います。しかし、フロントエンドで言語を切り替えるだけで済みます。バックエンドではなく、フロントエンドの「静的な」ページの周りにスコープをラップしようとしていました。この道を歩いていると、この種のサイトには構造や他の何かを考えることができるでしょうか? – ruevaughn

関連する問題