Pracuję w Rails 3.2 aplikacji z następującymi warunkami ułożenia:Railsy current_path Helper?
scope "(:locale)", locale: /de|en/ do
resources :categories, only: [:index, :show]
get "newest/index", as: :newest
end
mam kontrolera z następujących czynności:
class LocaleController < ApplicationController
def set
session[:locale_override] = params[:locale]
redirect_to params[:return_to]
end
end
Używam tego z czymś takim w szablony:
= link_to set_locale_path(locale: :de, return_to: current_path(locale: :de)) do
= image_tag 'de.png', style: 'vertical-align: middle'
= t('.languages.german')
Zastanawiam się, dlaczego nie istnieje pomocnika w Rails takich jak current_path
, coś, co jest w stanie wywnioskować, jaką drogą obecnie używamy, a zmiana trasy do niej obejmuje nowe opcje.
Mam problem jest użycie coś jak redirect_to :back
, jeden popycha użytkownika z powrotem do /en/........
(lub /de/...
), który sprawia, że przyniesienie doświadczenia.
Do tej pory zapisywałem ustawienia regionalne w sesji, ale to nie zadziała dla Google i innych usług indeksowania.
Jestem pewny, że jeśli zainwestowałem wystarczająco dużo czasu, uda mi się wymyślić coś, co jest wystarczająco inteligentne, aby wykryć, która z tras jest dopasowana, i wymienić część locale, ale mam wrażenie, że to będzie hack.
Jestem otwarty na wszystkie myśli, ale ten SO question sugeruje użycie tylko sub()
; niestety z tak krótkimi i często występującymi strunami, jak krótkie kody lokalne, prawdopodobnie nie jest zbyt mądry.
Dobra sztuczka, skończyłem na pisaniu tego: 'def current_path (options = {}); options = request.params.symbolize_keys.merge (opcje); url_for Rails.application.routes.recognize_path (request.path) .merge (opcje) koniec 'który czuł się przesadnie! –