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

在我的意见/布局/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

我刚刚将您发布的所有代码粘贴到了一个新的 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 services。我希望这会有所帮助。

于 2012-04-04T23:16:02.273 回答