У меня проблемы с передачей параметров моему контроллеру. Я создал модель наследования одной таблицы в моем файле модели.
class Account < ActiveRecord::Base
belongs_to :user
end
class AdvertiserAccount < Account
end
class PublisherAccount < Account
end
Я настроил свою таблицу маршрутов с вложенными ресурсами
resources :advertiser_accounts do
resources :campaigns
end
Я хочу иметь возможность передать текущий account_id (account_id из одного из моих двух подклассов учетной записи) в файл контроллера моей кампании.
URL, который я бы использовал: http://127.0.0.1:3000/advertiser_accounts/1/campaigns
Так как мой ресурс для URL - это рекламодатель, а не учетные записи, я не могу получить параметр: account_id.
class CampaignsController < ApplicationController
def index
@account = current_user.accounts.find_by_id(params[:account_id])
end
end
есть ли ярлык для получения текущего ресурса или идентификатора? Я правильно передаю параметры? Кажется странным вызывать многие find_by_id в контроллере. Любая помощь приветствуется.
Изменить Возможное решение:
Одним из решений, о котором я думал, было задание типа в моих маршрутах, а затем в контроллере я бы использовал оператор case, а затем получил params [: advertiser_account_id], но это кажется очень утомительным и грязным. Особенно, если мне нужно будет скопировать и вставить список инструкций в каждом действии.
routes.rb
resources :advertiser_accounts, :type => "AdvertiserAccounts" do
resources :campaigns
end
campaigns_controller.rb
def index
case params[:type]
when "AdvertiserAccounts"
@account = current_user.accounts.find_by_id(params[:advertiser_account_id])
when "PublisherAccounts"
@account = current_user.accounts.find_by_id(params[:publisher_account_id])
end
end