2012-10-27 2 views
10

나는 다음과 같은 모델을 가지고 상상 :이 ActiveAdmin을에서 할 경우ActiveAdmin을 사용하여 관련 데이터를 쉽게 만들거나 선택하는 방법이 있습니까?

class Translation < ActiveRecord::Base 
    has_many :localizations 
end 

class Localization < ActiveRecord::Base 
    belongs_to :translation 
end 

는 :

ActiveAdmin.register Localization do 
    form do |f| 
    f.input :word 
    f.input :content 
    end 
end 

단어 협회는 나만 기존의 단어에서 선택할 수 있습니다. 그러나 나는 즉시 새로운 단어를 만들 수있는 옵션을 원합니다. 현지화 모델에서 중첩 된 특성을 허용하는 것이 유용 할 수 있다고 생각했지만 (기존의 단어를 선택하지 않고 Word를 만드는 옵션 만 제공합니다). 이 문제를 어떻게 해결할 수 있습니까?

+0

에 대해 레일 캐스트입니까? –

+0

메뉴에서 선택하거나 새 번역 및 새 번역본을 만들 수 있어야합니다 (한 번에 전체). – Geo

답변

10

나는 당신이 (테스트하지)이

class Localization < ActiveRecord::Base 
    attr_accessor :new_word #virtual attribute 
    attr_accessible :word_id, :content, :new_word 
    belongs_to :translation 
    before_save do 
    unless @new_word.blank? 
     self.word = Word.create({:name => @new_word}) 
    end 
    end 
end 

주요 아이디어 생성 및 현지화를 저장하기 전에 새 Word 인스턴스를 저장하고 word_id 대신 사용하는 가상 속성을 사용하여 시도 할 수 있다고 생각 드롭 다운에서. 메뉴에서 선택 또는 PARAMS (URL에 의해 전달)에 저장 -

ActiveAdmin.register Localization do 
    form do |f| 
    f.input :word 
    f.input :content 
    f.input :new_word, :as => :string 

    end 
end 

이 큰 가상 속성 현재 번역이 결정하려는 방법 ActiveAdmin을에서 http://railscasts.com/episodes/167-more-on-virtual-attributes

관련 문제