2017-11-27 6 views
0

는 방법 nested_attribute활성에 permit_params 관리어레이의 속성을 지정하기 위해?허가 PARAMS 어레이 [액티브 관리]

응용 프로그램/모델/event.rb

class Event < ActiveRecord::Base  
    has_many :other_details, dependent: :destroy  
    accepts_nested_attributes_for :other_details  
end 

응용 프로그램/모델/other_detail.rb

class OtherDetail < ActiveRecord::Base  
    belongs_to :event  
end 

응용 프로그램/관리/event.rb

ActiveAdmin.register Event do  
permit_params :other_details_attributes => [:id, :detail_type, :points]  
    form do |f| 
    f.inputs do 
    f.has_many :other_details do |ff, index| 
     ff.input :detail_type 
     ff.input :points, input_html: { value: (ff.object.points.join(", ").remove('%') if ff.object.points.present?)} 
    end 
    end 
end 

내가 무엇입니까

params['experience']['other_details_attributes'] = 
{"0"=>{"detail_type"=>"Itinerary","points"=>"point A, point B", "id"=>"37"}, 
"1"=>{"detail_type"=>"Schedule","points"=>"point C, point D", "id"=>"36"}} 

어떻게 구할 수 있습니까?

params['experience']['other_details_attributes'] = 
{"0"=>{"detail_type"=>"Itinerary", "points"=>["point A", "point B"],"id"=>"37"}, 
"1"=>{"detail_type"=>"Schedule", "points"=>["point C", "point D"], "id"=>"36"}} 

-

  1. 은 내가 배열에 필요한 문자열 포인트를 얻고있다.

  2. @ xeon131으로 제안한 방법을 시도했지만 업데이트 방법이 복잡해졌습니다.

+0

왜 배열에 포인트를 합류? – xeon131

+0

이 형식으로 만 사용자에게 표시해야합니다. –

+0

당신은이'[: id, : detail_type, : points => []]'을 시도 했습니까? – Vishal

답변

0

모델에서 원하는 동작을 얻으려면 setter 및 getter 메서드를 재정의 할 수 있습니다. 당신이 그것을 원하는 경우

app/models/other_detail.rb

def points 
    self[:points]&.join(",") 
    end 

    def points=(values) 
    self[:points] = values.split(",") 
    end 
+0

'active admin'에서 이것을 어떻게 호출할까요? –

+0

위 메소드는 기존 메소드를 대체합니다. 양식을'ff.input : points'로 변경하면 양식이 제출 될 때 setter 메소드가 자동으로 호출됩니다. – xeon131

+0

나는 당신이 제안한 방법을 시도했으나 이로 인해 많은 코드 행이 발생했습니다. : id, : detail_type, : points => []]'작동했습니다. –