Sto scrivendo una specifica per il metodo di un controller create
:errore di Rubino: "Simbolo come indice di matrice"
describe "POST create" do
it "should create an adtag with valid params" do
campaign = Campaign.make
campaign_attributes = Hash.new
campaign_attributes[:adtag_attributes] = Hash.new
campaign_attributes[:adtag_attributes][:code] = "<h1>Sample code</h1>"
post 'create', { :id => campaign.id, :campaign => campaign_attributes }
end
end
Ma quando lo eseguo, ottengo l'errore "Symbol as array index"
nel controller, quando cerca per elaborare questo codice:
params[:campaign][:adtag_attributes].each_with_index do |attributes,index|
# some code
end
Qualche idea? Grazie
EDIT 1:
non ho scritto il controller, ma funziona con test manuale. Il punto di vista che chiama il mio controller dispone di questo codice:
fields_for 'campaign[adtag_attributes][]', adtag do |adtag_form|
Forse la mia spec non è buono?
EDIT 2:
problema risolto grazie alla risposta di Rishav. Non ho capito che nella vista, campaign[adtag_attributes][]
significa che campaign[adtag_attributes]
è una matrice.
Così ho appena sostituito
campaign_attributes = Hash.new
campaign_attributes[:adtag_attributes] = Hash.new
campaign_attributes[:adtag_attributes][:code] = "<h1>Sample code</h1>"
da
campaign_attributes = Hash.new
campaign_attributes[:adtag_attributes] = Array.new
campaign_attributes[:adtag_attributes] << { :code => "<h1>Sample code</h1>" }
e ha funzionato.
non ho scritto il controller, ma funziona con test manuali. Vedi il mio post di modifica per maggiori dettagli. –
controllare l'aggiornamento sopra –
Sì, funziona. Grazie ! –