2010-04-09 8 views
12

일부 중첩 된 매개 변수를 가져오고 싶습니다. 나는 많은 아이템을 가진 명령을 가지고 있고,이 아이템들은 각각 타입을 가지고있다. 컨트롤러에서 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 호출을 사용하여 db에 추가합니다. 그들은 내가 item_type_id 매개 변수에 ITEM_TYPE의 이름을 얻을 양식을 게시하고 난 올바른 ITEM_TYPE을 찾아 다음을 수행 params에서 중첩 된 필드에 액세스하려면 그

+1

더 구체적이어야합니다. 이 매개 변수를 어디서 얻고 싶습니까? 컨트롤러에서 업데이트/생성 방법? 또는 새로운/편집 작업에서 볼 수 있습니까? 몇 가지 코드를 추가하십시오 - 항상 당신이 원하는 것을 쉽게 추측 할 수있게 해줍니다. – klew

+0

내가 질문을 게시했을 때 바쁘다 :) – Flexo

답변

26

에 ID를 설정하려는 경우 :

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! love love –

+0

그게 내가 필요한 것 같아. 그러나, 난 정의되지 않은 메서드를 nil에 대한 값을 얻을 : NilClass - 오류 – Flexo

+0

'params''items_attributes'가없는 것 같습니다. 'params'를 출력하여 값을 확인하십시오. –

관련 문제