(Friendly_id) Как использовать slug вместо id во вложенных маршрутах? - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть две модели - Команда и Кампания.

Команда has_many :campaigns & Кампания belongs_to :team

Используя гем friend_id, маршруты моей команды работают, как и ожидалось, т.е. https://localhost/t/myteam

Однако, для campaign_path(@campaign.team, @campaign) мой URL отображается как http://localhost/t/1/campaign/1, в то время как я ожидаю, что он будет http://localhost/t/myteam/campaign/1

Как я могу этого достичь? Что я делаю не так?

Отправка фрагмента кода моего маршрута.

resources :teams, :path => 't' do
  member do
    get :new_invite
    resources :campaigns, :path => 'c' do
      member do
        get :share_callback
        get :enter
      end
    end
  end
end

Campaign.rb

extend FriendlyId
friendly_id :campaign_heading, use: :slugged
belongs_to :team

Team.rb

extend FriendlyId
friendly_id :slug, use: :slugged

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Попробуйте использовать его более явно:

team_campaign_path(team_id: @campaign.team.slug, @campaign)
0 голосов
/ 06 ноября 2019

Является ли маршрут ресурсным? Если это так, то вам нужно установить ключ параметра на slug. Как это:

resources :campaigns, param: :slug
...