2012-02-13 51 views
8

我一直在關注嵌套窗體和複雜窗體的Railscasts插曲。在創建多個模型時,我能夠編輯,更新,刪除和創建嵌套在批處理模型中的示例模型的記錄。預計參數「樣本」的散列(已獲得陣列)

我一直在打破我的頭,很久沒有試過尋找解決這個問題的方法。

我的開發日誌文件給了我下面的錯誤。

錯誤消息:

Status: 500 Internal Server Error 
    expected Hash (got Array) for param `samples' 
在我的控制器

我有這樣

def update 
    @batch = Batch.find(params[:id]) 

    respond_to do |format| 
     if @batch.update_attributes(params[:batch]) 
     flash[:notice] = 'Successfully updated Batch.' 
     format.html { redirect_to(@batch) } 
     format.xml { head :ok } 
     else 
     format.html { render :action => "edit" } 
     format.xml { render :xml => @batch.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 

我認爲更新操作是這樣的:

<%= form_for @batch do |f| %> 
...... 
<%= f.fields_for :samples do |s_form| %> 
.... s_form things 
<% end %> 
<% end %> 

我的模型包含相同東西:

has_many :samples, :dependent => :destroy 

    accepts_nested_attributes_for :samples, :reject_if => lambda { |a| a[:content].blank? }, :allow_destroy => true 

所有的建議表示讚賞。

+0

我在形式使用'text_field_tag',因爲我提供的Rails-2型ARGS當我運行的Rails 3.你認爲自己做的,在所有的時候碰到了類似的問題?如果不是,你能提供整個視圖嗎? (也許在pastie.org) – JellicleCat 2012-06-15 15:13:11

+0

當字符串數組包含一些空元素時,我遇到了這個錯誤消息。 – 2015-08-21 01:07:25

回答

3

我有同樣的問題,只是修復它。

檢查您的請求的標題。我看到了:

weight[2][name]:Tests 
weight[2][value]:75 
weight[1][name]:Quizzes 
weight[1][value]:25 
weight[][name]:Foo 
weight[][value]: 

這是最後兩個導致問題的原因。在我的情況下,我不得不給這個重量一個ID來擺脫錯誤。

13

別人誰遇到了同樣的問題:

,當你在你的表格一樣有兩個字段導致此錯誤:

video: 'some string' 
video['url']: 'some url' 

然後軌道將與錯誤崩潰:預期散列(得到的字符串)爲參數

解決方案很簡單:將「視頻」更改爲其他內容。例如: -

video_origin_url: 'some string' 
video['url']: 'some url' 
+1

這是非常有幫助的。我感到奇怪的是,rails 3.2沒有更多的描述性錯誤。 – thekingoftruth 2015-06-29 20:21:11