У меня проблемы с определением маршрутов, которые я не хочу вкладывать.
У меня есть следующие маршруты:
resources :foos
resources :bars
resources :bazs do
resources :hellos
resources :worlds
end
Все модели foo, bar и baz принадлежат пользовательской модели. Я не хочу вкладывать другой слой, но хочу, чтобы в моем URL был префикс, соответствующий атрибуту постоянной ссылки пользователя (аналогично каждому репозиторию github с префиксом имени пользователя). Итак, у меня есть фильтр «до» на всех моих контроллерах
def get_scope
@user = User.find_by_permalink(params[:permalink])
end
Изменено to_param благодаря @ cowboycoded
class User < ActiveRecord::Base
def to_param
permalink
end
end
Я обернул эти маршруты
scope ":permalink", :as => :user do
#nested routes here
end
Теперь все работает нормально, пока я передаю @user каждому неиндексированному маршруту. Не кажется слишком сухим, что приходится возвращаться ко всем моим представлениям и заменять (@foo) на (@user, @foo), когда он уже ограничен.
Если я не ошибаюсь, метод to_param просто заменяет: id, чтобы URL, такие как / users /: id, отображались как users / permalink вместо users / 1. Я попытался использовать это: id в своей области видимости, но это конфликтует с параметром foo: id и нарушает все. Может быть, есть связь с путями, которые мне не хватает?
Спасибо за любые ваши предложения!