У меня небольшая проблема ... Я установил приложение rails, которое должно обслуживать немецкий сайт. Чтобы использовать внутренние плюрализмы Rails, я держал все свои модели на английском языке (например, модель "JobDescription
").
Теперь, если я позвоню "http://mysite.com/job_descriptions/
", я получу все свои job_descriptions
.... пока все хорошо. Поскольку я не хотел, чтобы в моем URL-адресе был английский термин "job_descriptions
", я добавил следующее в мои маршруты. Rb
map.german_term '/german_term', :controller => 'job_descriptions', :action => 'index'
map.german_term '/german_term/:id', :controller => 'job_descriptions', :action => 'show'
Если я позвоню "http://mysite.com/german_term/
" или "http://mysite.com/german_term/283
", я получу все свои job_descriptions
, что хорошо.
Однако, чтобы сделать URL-адрес более удобным для SEO, я хотел бы обменять этот идентификатор на более удобный для пользователя фрагмент в URL-адресе. Таким образом, я вставил в свой job_description.rb
следующее:
def to_param
"#{id}-#{name.gsub(/[^a-z0-9]+/i, '-')}"
end
, который всякий раз, когда я использую "job_description_path
" в любом методе link_to
, выводит мои URL-адреса примерно как "http://mysite/job_descriptions/13-my-job-description-title".
Однако, и вот где я застрял, я хотел бы получить "http://mysite/german_term/13-my-job-description-title
". Я уже пытался заменить "job_description_path
" на "german_term_path
" в коде link_to, но это только генерирует "http://mysite/german_term/13
". Очевидно, to_param
не называется.
Я нашел один обходной путь - создать ссылку с помощью
<%= link_to job_description.name, german_term_path(job_description.to_param) %>
Но довольно утомительно менять все вызовы link_to
в моем коде. Я хочу заменить "job_description
" на "german_term
" всякий раз, когда это встречается в URL.
Есть мысли?!?
С уважением,
Себастьян