1

Ryan Bates railscasts I18n Internationalizationをフォローしていて、問題や質問にぶつかっています。

次のように、リンクに言語を設定しようとしています。

http://localhost:3000/en/site/services (英語)

http://localhost:3000/es/site/services (スペイン語)

これをルートファイルで定義しています:

ルート.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

そして私のviews/layouts/application.html.erbで

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

今、rake ルートを実行しようとしたり、取得した URL に移動しようとしたりするたびに

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

私はルートにかなり慣れていません。誰かが問題を確認/説明するのを手伝ってくれますか? 前もって感謝します。

4

1 に答える 1

1

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

mike@sleepycat:~/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 による Restful Web services です。それが役立つことを願っています。

于 2012-04-04T23:16:02.273 に答える