У меня есть модели пользователей и кампаний. I гнездятся кампании под пользователей и URL, выглядит следующим образом:Как использовать историю friendly_id с вложенными ресурсами
http://localhost:3000/user-slug/campaign-slug
Маршруты: модель
resources :users, :path => '' do
resources :campaigns, :path => ''
end
кампании:
class Campaign < ActiveRecord::Base
...
extend FriendlyId
friendly_id :title, use: :history
...
end
Моя модель Пользователь не использует историю.
контроллер кампании (от friendly_id гида):
class CampaignsController < ApplicationController
before_filter :find_campaign
def show
@campaign = Campaign.friendly.find(params[:id])
end
private
def find_campaign
@campaign = Campaign.friendly.find(params[:id])
# If an old id or a numeric id was used to find the record, then
# the request path will not match the post_path, and we should do
# a 301 redirect that uses the current friendly id.
if request.path != campaign_path(@campaign)
return redirect_to @campaign, :status => :moved_permanently
end
end
end
Когда я посещаю старый слизняк, чтобы вызвать переназначение я получаю эту ошибку:
ActionController::UrlGenerationError in CampaignsController#show
No route matches {:action=>"show", :controller=>"campaigns", :format=>nil, :id=>nil, :user_id=>#<bunch of other stuff in here>} missing required keys: [:id]
Не знаю, как я должен настроить метод перенаправления на сделай так, чтоб это работало.