2012-10-27 7 views
10

は、私は次のモデルを持っている想像しActiveAdminで関連データを作成/選択する簡単な方法はありますか?私はActiveAdminでこれを行う場合は</p> <pre><code>class Translation < ActiveRecord::Base has_many :localizations end class Localization < ActiveRecord::Base belongs_to :translation end </code></pre> <p>:

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

単語の関連付けが唯一の私は、既存の単語の中から選択できるようになります。しかし、私はその場で新しい単語を作成するオプションを持っていたいと思います。私は、ローカライゼーションモデルでネストされた属性を受け入れると便利かもしれないと考えました(しかし、私は既存のものから選択するのではなく、Wordを作成するオプションしか持っていません)。どうすればこの問題を解決できますか?

+0

があなたのActiveAdminであり、どのように現在の翻訳であるかを決定したいと思います - メニューからそれを選択するかのparams(urlで渡された)に保存されていますか? –

+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の代わりにそれを使用することであるため、仮想属性を使用してみてくださいすることができると思いますドロップダウンから。

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

    end 
end 

仮想属性についての素晴らしいレールキャストhttp://railscasts.com/episodes/167-more-on-virtual-attributes

関連する問題

 関連する問題