2015-06-09 5 views
2

у меня есть URLСтранный вопрос локаль в Rails

<li><%= link_to "#{t('feed.add')}", feed_path(locale) %></li> 

И проблема в том, что после регистрации, при нажатии на эту ссылку в первый раз он перенаправляет меня на mydomain.com/feed и выводит следующую ошибку :

"feed" is not a valid locale 

в

def set_locale 
    I18n.locale = params[:locale] || I18n.default_locale 
end 

Но когда я вернусь назад и нажмет снова повторно направляет меня на:

mydomain.com/en/feed 

Итак, в чем проблема этой странной проблемы?

UPDATE

devise_for :admin_users, ActiveAdmin::Devise.config 
ActiveAdmin.routes(self) 
match '', :via => [:get], to: redirect("/#{I18n.locale}") 
get '/en/youarethechampion' => "winners#winner" 

get "/en/hook" => "feed#hook" 
get '/thisvideonotfound' => 'feed#notFound' 

get '/:locale/feed', to: 'feed#index', as: 'feed' 
post '/:locale/feed/create', to: "feed#create" 
get '/:locale/feed/new', to: "feed#new", as: 'feed_new' 
get '/:locale/feed/destroy', to: "feed#destroy", as: 'feed_destroy' 
get '/:locale/feed/edit', to: "feed#edit", as: 'feed_edit' 
get '/:locale/feed/update', to: "feed#update", as: 'feed_update' 

scope :path => "(:locale)", :locale => /en|ru/ do 
    devise_for :users 
end 

match '/:locale/posts/search/', to: 'home#search', as: 'search', via: :get 

get '/:locale/page/:page_slug' => 'home#about' 
get '/:locale/:category/:id/', to: 'home#show', as: 'feed_show' 
get '/:locale/:id/', except: 'search', to: 'home#by_category', as: 'category' 
get '/:locale/posts/user/:name/', to: 'home#by_user', as: 'user' 
get '/:locale/posts/tag/:tag/', to: 'home#by_tag', as: 'tag' 
get '/:locale/pages/:page/', to: 'page#show', as: 'page' 
post '/feed/:id/comments/', to: 'home#create_comment' 
get '/:locale/', to: "home#index" 
+0

Сообщение ваши маршруты файл локали файл (например, en.yml) и application.rb – shlajin

+0

Что такое значение 'locale', когда вы делаете' feed_path (локаль) '? –

+1

Также вы можете подставить '' # {t ('feed.add')} "' с 't ('feed.add')' - Не относится к ответу, хотя – AbM

ответ

0

Ok, выглядит как сценарий после регистрации: локаль nil, и эта линия

<li><%= link_to "#{t('feed.add')}", feed_path(locale) %></li> 

делают ссылку на только /feed. (Попробуйте напечатать его в передней части плавкой)

<li> 
    Locale is <%= locale %> 
    <%= link_to "#{t('feed.add')}", feed_path(locale) %> 
</li> 

Затем маршруты считают, что/корм относится к этому маршруту

get '/:locale/', to: "home#index" 

и он пытается установить feed региональные настройки. Это не работает! Затем вы переходите на другую страницу, где вы определяете «реальный» локальный через default_locale -> en.

I18n.locale = params[:locale] || I18n.default_locale 
+0

Нет, языковой стандарт не пуст, он равен «en», но он все еще показывает мне эту ошибку. –

+0

Хорошо, тогда опубликуйте журнал приложений в пределах ошибки, а также отправьте ссылку пути (что-то вроде «путь <% = feed_path» (locale)%> "внутри шаблона). – shlajin

+0

печатает '/ en/feed'. Все в порядке –

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