需要诊断应用程序的routes.rb才能将英语/西班牙语添加到Rails 3应用程序



我正在关注Ryan Bates的railscasts I18n国际化并遇到问题/疑问。

我正在尝试在我的链接中设置语言,如下所示:

英语 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

在我的视图/布局/应用程序.html.erb

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

现在,每当我尝试运行耙子路由或导航到我得到的 URL 时

C:wwwproject>rake routes
  rake aborted!
  missing :controller

我对路线相当陌生,有人可以帮助我查看/解释问题吗?提前谢谢。

我刚刚将您发布的所有代码粘贴到一个新的 rails 应用程序中,它就可以工作了。我的猜测是,您的 routes.rb 文件中还有其他路由,其中一个无效。您发布的路线是这样的:

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服务。我希望这有所帮助。

相关内容

最新更新