Я пытаюсь достичь чего-то похожего на способ Github для маршрутов. Например. У меня есть проект с именем 'question', результаты которого приведены в URL / hjuskewycz / question. Поэтому моя цель - иметь маршруты, где первый сегмент - это имя пользователя, а второй - имя проекта.
Я попробовал несколько разных подходов, это тот, который я застрял прямо сейчас:
scope ":username" do
resources :projects, :path => "" do
resources :pictures
end
end
Использование
project_path :username => project.owner.username, :id => project.to_param
работает как положено. Однако всегда утомительно указывать имя пользователя, хотя это всегда имя пользователя владельца. Я бы очень предпочел
project_path(:id => project.to_param)
Я знаю о default_url_options и url_for и копался в коде. Однако polymorphic_url не использует default_url_options.
Я пытался в маршрутах.rb:
resources :projects, :path => "", :defaults => {:username => Proc.new { "just_testing" }}
, поскольку вы можете использовать процедуру для ограничений, но она также не работает.
Я пробовал в проекте. Rb
def to_param
"#{owner.username"/#{project.title}"
end
Я уже потратил слишком много времени на эту проблему, и мой текущий подход использует удобный метод для добавления параметра: username. Тем не менее, я думаю, что использование этого метода повсеместно, просто чтобы добавить запись воняет (плохой запах кода). Интересно, есть ли более элегантное решение этой проблемы?