Domanda

Come posso collegare un evento onclick a un link_to_function in modo tale che facendo clic sull'evento si aggiorni un elemento sulla pagina (usando i parziali)?

Quando l'utente fa clic sul collegamento generato, vorrei aggiornare il parziale contenente il codice in modo che i venga aggiornato.

 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 

Ho un parziale in una forma più grande che contiene solo:

<%= add_step_link(technique_form) %>

Sto tentando di tenere traccia del numero di passaggi in una tecnica. Nel modulo che sto creando, gli utenti possono aggiungere nuovi passaggi a una serie di istruzioni. In questo momento, ho campi predefiniti per i passaggi 1-7. Aggiungendo un passaggio, si ottiene il passaggio 8. Il problema è che anche i passaggi successivi sono numerati '8'.

Sto estendendo i "più modelli figlio in una forma dinamica" tutorial in http://railsforum.com/viewtopic.php?id=28447 per i miei scopi.

È stato utile?

Soluzione

Ok, sono un po 'confuso da quello che stai facendo, ma cercherò di dare alcuni suggerimenti.

Invece di usare link_to_function , usa link_to_remote . Il collegamento alla funzione chiama javascript, ma ciò che si vuole effettivamente fare è richiamare un controller che quindi esegue alcuni rjs per sostituire l'intero parziale, o più probabilmente, aggiungere il nuovo parziale (contenente il passaggio) alla fine del proprio attuale passi.

Questo è simile a tutti quegli esempi che hai visto in cui le persone aggiungono un commento alla fine dei loro commenti sul blog (aspettati di usare link_to_remote piuttosto che remote_form_for) vedi 3/4 del percorso attraverso http://media.rubyonrails.org/video/rails_blog_2.mov

Puoi consultare i documenti per link_to_remote qui: http: // api. rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html

Altri suggerimenti

Suggerisco di usare link_to_remote come suggerisce RichH. Il trucco per te sembra tenere traccia di @i . Lo metterei come parametro URL in link_to_remote , o nell'oggetto sessione. Suggerirei la sessione & # 8212; sembra più facile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top