Ich habe Schwierigkeiten, Parameter an meinen Controller zu übergeben. Ich habe in meiner Modelldatei ein Vererbungsmodell für einzelne Tabellen erstellt.Wie kann ich Parameter an verschachtelte Ressourcen für die Vererbung einzelner Tabellen in Ruby on Rails übergeben?
class Account < ActiveRecord::Base
belongs_to :user
end
class AdvertiserAccount < Account
end
class PublisherAccount < Account
end
gefasst ich meine Routen-Tabelle mit verschachtelten Ressourcen bis
resources :advertiser_accounts do
resources :campaigns
end
Ich möchte den aktuellen account_id passieren können (eine account_id von einem meiner zwei Subklassen von Konto) zu meiner Kampagne Controller-Datei . Eine URL, die ich verwenden würde, ist http://127.0.0.1:3000/advertiser_accounts/1/campaigns Da meine Ressource für die URL Advertiser_Accounts und keine Konten ist, kann ich den Parameter: account_id nicht abrufen.
class CampaignsController < ApplicationController
def index
@account = current_user.accounts.find_by_id(params[:account_id])
end
end
Gibt es eine Verknüpfung, um die aktuelle Ressource oder die ID zu erhalten? Übertrage ich Parameter richtig? Es scheint verwirrend, viele find_by_id im Controller zu nennen. Jede Hilfe wird geschätzt.
bearbeiten Mögliche Lösung: Eine der Lösungen, die ich dachte, war eine Art in meinen Routen festlegen und dann in meinem Controller würde ich Fall Anweisung dann params erhalten [: advertiser_account_id] aber das scheint sehr mühsam und chaotisch . Vor allem, wenn ich in jeder Aktion eine Liste von Fallanweisungen kopieren und einfügen muss.
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
Was 'routes' Show nicht Rake, dh wenn i Rake Routen laufen i sehen: http://cl.ly/1M2t2B1i1g290S2E353N als einer meiner Einträge, und ich weiß ': ID' ist die ID-Nummer –
Oh. Vielen Dank! Ich denke mein Problem hat mit meiner Routes-Datei zu tun. Meine Strecken zeigen, publisher_account_campaign GET /publisher_accounts/:publisher_account_id/campaigns/:id(.:format) Ich verwende folgendes meine Routen in meinem routes.rb Ressourcen zu generieren: advertiser_accounts tun Ressourcen: Kampagnen Ende Wie kann ich meine: publisher_account_id als übergeordnetes Element verwenden: account_id? Meine STI-Account-Tabelle hat keine Spalten namens: publisher_account_id – user1157352
Danke! Ich habe hinzugefügt: as => "accounts" in meinen Routen und ich denke, es hat das Problem gelöst – user1157352