2012-04-09 17 views
6

ための `にhas_many」私はこのエラーを取得しています:、未定義のメソッドFormtastic

ActiveAdmin.register Ressource do 
    form do |f| 
     f.inputs do 
      f.input :offer_id, :as => :hidden 
      f.input :name 
      f.input :category, :include_blank => false, :collection => Category.order('place ASC').all, :member_label => :to_label 
      f.input :description, :input_html => {:class => 'editor'} 
      f.input :price 
     end 
     f.has_many :roles do |app_f| 
      app_f.inputs do 
       if not app_f.object.id.nil? 
        app_f.input :_destroy, :as => :boolean, :label => "Supprimer l'utilisateur du lot" 
       end 
       app_f.input :user, :member_label => :to_label, :label => 'Assigné le lot' 
       app_f.input :name, :include_blank => false 
      end 
     end 
     f.buttons 
    end 
end 

しかし、それは部分的には動作しません:私はこのようにそれを使用するときには機能し

undefined method `has_many' for #<Formtastic::SemanticFormBuilder:0xb410d4c> 

私はhas_manyメソッドを別のやり方で呼び出す必要がありますか?

答えて

11

ActiveAdminは、has_many(activeadmin gemのlib/active_admin/form_builder.rb)などの便利なヘルパーでformtasticを拡張しています。

残念ながら、これらのヘルパーはテンプレートではデフォルトでは使用できません。あなたはその後、あなたは余分なhas_many機能を必要としない場合は

  1. (それはactive_adminのように見えますが、コレクションに新しいレコードを追加することを容易にするいくつかのJavaScriptを追加します):

    は、ここでは、2つのオプションがありますformtasticを使用することができます。この例ではactiveadminファイル内だけでなく、部分的に正常に動作する必要があります:

    ActiveAdmin.register Ressource do 
        form do |f| 
        # ... 
        f.inputs :for => :roles do |app_f| 
         # ... 
         app_f.input :name, :include_blank => false 
        end 
        f.buttons 
        end 
    end 
    
  2. は、明示的にActiveAdminフォームビルダを使用します。

    <%= semantic_form_for [:admin, @resource], builder: ActiveAdmin::FormBuilder do |f| %> 
        <!-- ... --> 
    
        <%= f.has_many :teachers do |app_f| %> 
        <%= app_f.inputs do %> 
         <!-- ... --> 
        <% end %> 
        <% end %> 
    
        <%= f.buttons %> 
    <% end %> 
    

私はこのことができます願っています。

+0

私はjQueryのUIオートコンプリートの入力エリアを使用して子項目を追加したいと私はオプション2を使用。部分的にhas_manyヘルパーにアクセスできるようになったようですが、未定義のメソッドnew_recordが出てきます。 nil:新しいフィールドを作成しようとするときにhas_manyのNilClass。これを引き起こしている可能性のあるアイデアは何ですか?私はコントローラで.buildを行う必要があると思っています。 –

+0

気にしないで、モデルでaccepts_nested_attributes_forを使用して正しく動作させる必要がありました。 :) –

+0

これは私のための最初のエラーを修正しましたが、今はhas_manyを作成する行で "フリーズした文字列を変更できません"というエラーが出ます。何か案は? – elsurudo

3

あなたが部分的に使用したい場合は解決

form :html => {:multipart => true} do |f| 
end 

か、があります。

<%= active_admin_form_for [:admin, @resource] ,:html => {:multipart => true} do |f|%> 
<% end %> 
関連する問題