2012-04-04 2 views
1

Я следую за Райан Бейтс railscasts I18n Internationalization и ударил проблему/вопрос.Нужно диагностировать routes.rb для добавления английского/испанского в Rails 3 app

Я пытаюсь установить язык в моей ссылке, что-то вроде этого:

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, и один из них недействителен. На Вас осведомленными вышли, как это маршруты:

[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 routing основана на том, что происходит в route.rb, не будет иметь большого смысла, пока вы этого не поймете.

Существует много доступных в Интернете и хорошая книга, которая разъясняет мне все, - это полезные веб-сервисы Леонарда Ричардсона и Сэма Руби. Надеюсь, что это поможет.

+0

Вы правы, у меня есть другие маршруты, и я фактически сузил его. Мне нужно больше понять спокойную маршрутизацию, я проверю эту книгу. Я также собираюсь снова прочитать руководства Ruby on Rails по маршрутизации. Будет ли более приемлемая версия: ресурсов сайтов: а затем добавить кучу маршрутов участников? Мне не нужен CRUD для моего контроллера сайта, только действия, которые будут статичными (дома, продукты и т. Д.). Это лучшая практика для этого? – ruevaughn

+0

Я уже прошел путь к контроллеру «сайта», и его можно заставить работать. Я застрял с Rails (вместо того, чтобы устанавливать приложение Sinatra, чтобы заботиться о статических страницах или что-то в этом роде), потому что я хотел, чтобы эти «статические» страницы обновлялись, и я знаю, что мне придется иметь дело с проблемами I18n на всем сайте , В итоге у меня был контроллер, представляющий организацию с элементами типа «about», «contact» и «home» как свойства одной организации, хранящейся отдельно в db. Все остальное было Rails CRUD. Это сработало, но мне всегда остается интересно, есть ли лучший способ. – mikewilliamson

+0

Удивительно, это как раз моя ситуация, я также хочу, чтобы «статические» страницы обновлялись.Но мне нужен только интерфейс, чтобы переключать языки, а не конец, поэтому я пытался обернуть область вокруг только своих статических страниц, если это имеет смысл. Спустившись по этой дороге, есть ли какие-либо другие советы на этом сайте, насколько структура или любая другая вещь, о которой вы можете думать? – ruevaughn

 Смежные вопросы

  • Нет связанных вопросов^_^