Undefined method has_many for Formtastic

I get this error:

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

It works when I use it as follows:

 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 

But this does not work in partial, do I need to call the has_many method differently or something else?

+6
source share
2 answers

ActiveAdmin extends formtastic with some useful helpers such as has_many ( lib/active_admin/form_builder.rb in the activeadmin stone).

Unfortunately, these helpers are not available by default in your templates.

Here are two options:

  • If you don't need the has_many extra functionality (it seems like active_admin is adding some javascript to make it easier to add a new entry to the collection), you can use a fallback form. This example should work fine in the activeadmin file, as well as in partial:

     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 
  • Use the ActiveAdmin form constructor explicitly:

     <%= 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 %> 

Hope this helps.

+11
source

There is a solution

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

Or if you want to use partial:

 <%= active_admin_form_for [:admin, @resource] ,:html => {:multipart => true} do |f|%> <% end %> 
+3
source

Source: https://habr.com/ru/post/912739/


All Articles