Question

Comment attacher un événement onclick à un link_to_function , de sorte que cliquer sur l'événement actualise un élément de la page (à l'aide de partiels)?

Lorsque l'utilisateur clique sur le lien généré, j'aimerais actualiser le partiel contenant le code afin que i soit mis à jour.

 def add_step_link(form_builder)
    logger.info 'ADD_STEP_LINK'
    link_to_function 'add a step' do |page|
      form_builder.fields_for :steps, Step.new, :child_index => 'NEW_RECORD' do |f|
        logger.info 'inserted js'
        html = render(:partial => 'step', :locals => { :step_form => f, :i=>@i+=1})
        page << "$('steps').insert({ bottom: '#{escape_javascript(html)}'.replace(/NEW_RECORD/g, new Date().getTime()) });"
      end
    end
  end 

J'ai un partiel dans une forme plus grande qui ne contient que:

<%= add_step_link(technique_form) %>

Je tente de garder une trace du nombre d'étapes d'une technique. Dans le formulaire que je crée, les utilisateurs peuvent ajouter de nouvelles étapes à un ensemble d'instructions. À l'heure actuelle, j'ai des champs par défaut pour les étapes 1 à 7. En ajoutant une étape, vous obtenez l'étape 8. Le problème est que les étapes suivantes sont également numérotées «8».

J'étends les "Modèles enfants multiples sous une forme dynamique". didacticiel http://railsforum.com/viewtopic.php?id=28447 pour mes propres fins.

Était-ce utile?

La solution

Ok, je suis un peu confus par ce que vous faites, mais je vais essayer de faire quelques suggestions.

Plutôt que d'utiliser link_to_function , utilisez link_to_remote . Lien vers fonction appelle javascript, mais ce que vous voulez réellement faire est de rappeler un contrôleur qui exécute ensuite quelques rjs pour remplacer le partiel complet ou, plus vraisemblablement, ajouter le nouveau partiel (contenant l’étape) à la fin de votre action courante. pas.

Ceci est similaire à tous les exemples que vous avez vus où des personnes ajoutent un commentaire à la fin de leurs commentaires de blog (attendez-vous à utiliser link_to_remote plutôt que remote_form_for) voir 3/4 du chemin à travers http://media.rubyonrails.org/video/rails_blog_2.mov

Vous pouvez voir la documentation de link_to_remote ici: http: // api. rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html

Autres conseils

Je suggère d'utiliser link_to_remote comme le suggère RichH. Le truc pour vous, semble-t-il, consiste à garder trace de @i . Je le mettrais soit comme paramètre d'URL dans link_to_remote , soit dans l'objet de session. Je suggérerais la session, cela semble plus facile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top