2017-10-04 4 views
1

J'ai une application Rails qui fonctionne correctement sur Rails 3.x et ActiveAdmin 0.6.6. Cependant, je veux le mettre à niveau vers Rails 5 et ActiveAdmin 1.x. J'ai commencé le processus de mise à niveau d'abord en passant de 3.x à 4.x puis à 5x, et avec ActiveAdmin j'ai testé avec 1.0.0 et maintenant j'utilise le master de Github.Les formulaires sur partiellement ne sont pas affichés correctement

Tout fonctionnait bien avec l'application dans les deux versions de Rails et ActiveAdmin mais les formes de ActiveAdmin qui sont en partie.

Le problème est le suivant:

J'ai un fichier dont app/admin/menu.rb a une views/admin/menus/_form.html.erb partielle. Le partiel contient la forme du menu.

Ceci est le contenu de la partie (views/admin/menus/_form.html.erb):

<%= semantic_form_for [:admin, @menu], builder: ActiveAdmin::FormBuilder do |f| %> 
    <% f.inputs 'Campos Menu' do %> 
    <% f.input :project if current_admin_user.admin? %> 
    <% f.input :title %> 
    <% f.input :title_en %> 
    <% f.input :item %> 
    <% f.input :icon, as: :file %> 
    <% end %> 
    <% f.inputs 'Submenus' do %> 
    <% f.has_many :submenus, heading: '' do |fa| %> 
     <% fa.input :title, as: :string %> 
     <% fa.input :title_en, as: :string %> 
     <% fa.input :kind, as: :select, collection: Submenu.kind_collection %> 
     <% fa.input :items_as, as: :select, collection: Submenu.items_as_collection %> 
    <% end %> 
    <% end %> 
    <% f.actions do %> 
    <% f.action :submit %> 
    <% end %> 
<% end %> 

Le résultat rendu de ce fichier est que les boutons « actions », dans ce cas, le bouton « Soumettre ». La chose intéressante est que si j'enlève le <% f.actions do %>... du partiel alors le <% f.inputs 'Submenus' do %> est rendu et le même si j'enlève le plus tard. Dans d'autres, il est rendu sur le dernier bloc qui contient un end.

Le même comportement est observé sur Rails 4.x et 5.x (sauf Rails 5.1.x que je ne l'ai pas testé).

Si je déplace la forme de la partie à la app/admin/menu.rb il se rend bien. Cela pourrait être une solution pour moi mais j'ai d'autres formes qui utilisent JQuery pour la manipulation des champs et d'autres choses sur le front-end.

Comme je l'ai déjà dit, toutes ces formes partielles fonctionnaient correctement sur Rails 3.x et ActiveAdmin 0.6.6.

Quelqu'un sait quel est le problème?

DISCLAIMER: Je ne suis pas un expert Rails ou ActiveAdmin, ainsi d'ours avec moi, si une erreur est stupide liée à cette question.

Répondre

0

La solution que j'ai trouvé était de mettre un = pour le <% f.input(s) %> sur le partiel. Avoir quelque chose comme ça <%= f.inputs ... %> au lieu de cela <% f.inputs ... %> résout le problème.

1

Oui, il est activeadmin#3486 Je suis heureux que vous ayez trouvé la solution de contournement. Je suis curieux si this Arbre branch le fixe pour vous. Heureux de voir que les gens continuent de s'améliorer, je ferai ce que je peux pour aider.

+0

Salut, quel serait le moyen de tester cette branche suggérée dans mon projet? Comment puis-je le spécifier sur mon GemFile. Quoi qu'il en soit, j'ai trouvé une solution à mon problème, mais je ne suis pas sûr que ce soit la manière d'utiliser le composant formulaire, donc ce que j'ai fait a fonctionné pour mettre un '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' f.''' déclaration, c.-à-d. '' '<% = f.inputs: name => 'Menu Campos' do%>' ''. Il semble que le '' '' '' '' 'manquant empêchait le rendu du formulaire. Savez-vous si c'est une solution appropriée ou si cela va entraîner d'autres problèmes? – avaz

+1

'petit bijou 'arbre', git: 'https://github.com/varyonic/arbre.git', branche: « Personnellement, je 46_rails_tag_helper_with_block_in_arbre_template'' –

+1

recommande d'aller avec le flux et à l'aide de .arb au lieu partials de .erb avec ' active_admin_form_for ressource do | f | ... ' –