5
我寫一個規範的控制器的create
方法:它試圖在紅寶石錯誤:「符號作爲數組索引」
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
但是當我運行它,我得到的錯誤"Symbol as array index"
控制器,處理此代碼:
params[:campaign][:adtag_attributes].each_with_index do |attributes,index|
# some code
end
任何想法? 感謝
編輯1:
我沒有寫控制器,但它與手動測試工作。 調用我的控制器的視圖有這樣的代碼:
fields_for 'campaign[adtag_attributes][]', adtag do |adtag_form|
也許我的規格不好?
編輯2:
問題解決感謝Rishav的答案。我不明白,在該視圖中,campaign[adtag_attributes][]
意味着campaign[adtag_attributes]
是一個數組。
所以我剛剛更換
campaign_attributes = Hash.new
campaign_attributes[:adtag_attributes] = Hash.new
campaign_attributes[:adtag_attributes][:code] = "<h1>Sample code</h1>"
通過
campaign_attributes = Hash.new
campaign_attributes[:adtag_attributes] = Array.new
campaign_attributes[:adtag_attributes] << { :code => "<h1>Sample code</h1>" }
和它的工作。
我沒有寫控制器,但它與手動測試一起工作。查看我的帖子編輯瞭解更多詳情。 – 2010-09-08 16:05:37
檢查以上更新 – 2010-09-08 17:45:15
是的,它的工作原理。謝謝 ! – 2010-09-08 23:26:55