6

このエラーが発生します:

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

私がこのようにそれを使うとき、それは働きます:

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 

しかし、それは部分的には機能しません、私は別の方法または何か他の方法でhas_manyメソッドを呼び出す必要がありますか?

4

2 に答える 2

14

ActiveAdminは、has_manylib/active_admin/form_builder.rbactiveadmin gem内の)などの便利なヘルパーを使用してformtasticを拡張します。

残念ながら、これらのヘルパーはデフォルトではテンプレートで使用できません。

2つのオプションがあります。

  1. 追加の機能が必要ない場合has_many(active_adminがコレクションに新しいレコードを簡単に追加できるようにJavaScriptを追加しているように見えます)、stockformtasticを使用できます。この例は、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 %>
    

これがお役に立てば幸いです。

于 2012-04-10T17:37:03.257 に答える
3

解決策があります

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

または、部分的に使用する場合:

<%= active_admin_form_for [:admin, @resource] ,:html => {:multipart => true} do |f|%>
<% end %>
于 2012-08-01T12:38:55.120 に答える