2013-08-19 55 views
0

我有視圖:散裝創建一個模型記錄軌道4

<%= form_tag mined_materials_url do %> 
    <%= render 'import_fields' %><br /> 
    <%= render 'import_fields' %> 
    <%= button_tag :submit %> 
<% end %> 

_import_fields.html.erb:

<%= text_field_tag 'mined_material[][character_id]','' %> 
<%= text_field_tag 'mined_material[][material_id]','' %> 
<%= text_field_tag 'mined_material[][quantity]','' %> 
<%= text_field_tag 'mined_material[][price]','' %> 

(我將經由JS添加更多的字段)

和需要一次插入多個記錄到同一個模型中,但由於錯誤而未能保存:未定義的方法`permit'用於Array:0x00000001f63230

Params:

{"utf8"=>"✓", 
"authenticity_token"=>"fFR3nWwz2Q0ivED6XXyj4ICRBtj5Rdois4N++cNnCko=", 
"mined_material"=>[{"character_id"=>"1", 
"material_id"=>"1", 
"quantity"=>"1", 
"price"=>"1"}, 
{"character_id"=>"2", 
"material_id"=>"2", 
"quantity"=>"2", 
"price"=>"2"}], 
"button"=>""} 

我怎麼能批量創建?

編輯: MinedMaterialsController

class MinedMaterialsController < ApplicationController 
before_action :set_mined_material, only: [:show, :edit, :update, :destroy] 
before_action :load_mined_material, only: :create 
load_and_authorize_resource 


# GET /mined_materials/new 
def new 
    @mined_material = MinedMaterial.new 
end 

# POST /mined_materials 
def create 
    @mined_material = MinedMaterial.new(mined_material_params) 

    respond_to do |format| 
    if @mined_material.save 
     format.html { redirect_to new_mined_material_path, notice: 'Mined material was successfully created.' } 
    else 
     format.html { render action: 'new' } 
    end 
    end 
end 

def import 
end 

private 
# Use callbacks to share common setup or constraints between actions. 
def set_mined_material 
    @mined_material = MinedMaterial.find(params[:id]) 
end 

# Never trust parameters from the scary internet, only allow the white list through. 
def mined_material_params 
    params.require(:mined_material).permit(:character_id, :material_id, :quantity, :price, :paid_out, :date, :corp_tax) 
end 

def load_mined_material 
    @mined_material = MinedMaterial.new(mined_material_params) 
end 

end 
+0

你能顯示你的控制器代碼嗎? –

+0

我正在使用導入動作 – xinu

回答

0

你可以改變你的mined_material_params方法是:

params.permit({mined_material: [:character_id, :material_id, :quantity, :price, :paid_out, :date, :corp_tax]}).require(:mined_material) 

證方法僅如果值是一個哈希工作。

+0

它仍然說我不能允許數組,我應該改變我的形式嗎?或者也許我會做一些模型方法,將實際保存到數據庫,而不是使用標準的創建方法... – xinu

+0

你可以把參數在mined_material_params方法嗎? 此代碼在我的rails控制檯中工作: –

+0

'params = ActionController :: Parameters.new({「authenticity_token」=>「fFR3nWwz2Q0ivED6XXyj4ICRBtj5Rdois4N ++ cNnCko =」,「mined_material」=> [{「character_id」=>「1」 「material_id」=> 「1」, 「數量」=> 「1」, 「價格」=> 「1」},{ 「character_id」=> 「2」, 「material_id」=> 「2」,「量「=>」2「,」price「=>」2「}],」button「=>」「})' 'params.permit({mined_material:[:character_id,:material_id,:quantity,:價格,:paid_out,:日期,:corp_tax]}).require(:mined_material)' '#=> [{「character_id」=>「1」,「material_id」=>「1」 >「1」,「price」=>「1」},{「character_id」=>「2」,「material_id」=>「2」,「quantity」=>「2」,「price」=> 2" }]' –