2010-04-09 80 views
12

我想獲得一些嵌套參數。我有一個有很多項目的訂單,這些項目都有一個類型。我想從控制器的create方法中獲取type_id參數。如何訪問嵌套參數

@order = Order.new(params[:order]) 
@order.items.each do |f| 
    f.item_type_id = Item_type.find_by_name(f.item_type_id).id 
end 

原因是我希望用戶能夠在視圖中創建新的item_types。當他們這樣做時,我使用AJAX調用將它們添加到數據庫。當他們發佈的形式,我得到的item_type_id參數的ITEM_TYPE的名字,我想找到正確的ITEM_TYPE和ID設置爲

+1

你應該更具體。你想在哪裏得到這個參數?在控制器中更新/創建方法?或者鑑於新的/編輯行動?添加一些代碼 - 它總是讓你更容易猜到你想要的東西:) – klew 2010-04-09 20:31:26

+0

在那裏,更新了這個問題:)有點急,當我發佈它 – Flexo 2010-04-10 05:50:44

回答

26

params訪問嵌套領域做到以下幾點:

params[:order][:items_attributes].values.each do |item| 
    item[:type_id] 
end if params[:order] and params[:order][:items_attributes] 

以上解決方案僅適用於宣佈了正確的關聯和accepts_nested_attributes_for

class Order < ActiveRecord::Base 
    has_many :items 
    accepts_nested_attributes_for :items, :allow_destroy => true 
end 

class Item < ActiveRecord::Base 
    belongs_to :order 
end 
+0

@KandadaBoggu!愛的愛 – 2010-04-09 20:22:54

+0

似乎就是我需要的。然而,我得到一個未定義的方法'值'爲零:NilClass - 錯誤 – Flexo 2010-04-10 05:51:30

+0

它看起來像'params'沒有'items_attributes'。打印'params'來檢查值。 – 2010-04-10 06:36:30