未定义的方法`的has_many”的Formtastic(undefined method `has

2019-07-28 21:17发布

我得到这个错误:

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方法?

Answer 1:

ActiveAdmin延伸formtastic一些有用的工具,例如has_manylib/active_admin/form_builder.rb在activeadmin宝石)。

不幸的是,这些助手都默认不可用在你的模板。

这里有两个选项:

  1. 如果你不需要额外has_many功能(它看起来像active_admin增加了一些JavaScript来使其易于添加新记录的集合),那么你可以使用股票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 %> 

我希望这有帮助。



Answer 2:

有一个解决方案

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

或者,如果你想使用部分:

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


文章来源: undefined method `has_many' for Formtastic