Pregunta

¿Cómo adjunto un evento onclick a un link_to_function de modo que al hacer clic en el evento se actualiza un elemento en la página (usando parciales)?

Cuando el usuario hace clic en el enlace generado, me gustaría actualizar el parcial que contiene el código para que i se actualice.

 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 

Tengo un parcial en una forma más grande que contiene solo:

<%= add_step_link(technique_form) %>

Estoy intentando hacer un seguimiento del número de pasos en una técnica. En el formulario que estoy creando, los usuarios pueden agregar nuevos pasos a un conjunto de instrucciones. En este momento, tengo campos predeterminados para los pasos 1-7. Al agregar un paso, se obtiene el paso 8. El problema es que los pasos posteriores también se numeran '8'.

Estoy extendiendo los " Modelos secundarios múltiples en una forma dinámica " tutorial en http://railsforum.com/viewtopic.php?id=28447 para Mis propios propósitos.

¿Fue útil?

Solución

Ok, estoy un poco confundido por lo que estás haciendo, pero voy a intentar hacer algunas sugerencias.

En lugar de usar link_to_function , use link_to_remote . Link to function llama a javascript, pero lo que realmente quiere hacer es volver a llamar a un controlador que luego ejecuta algunos rjs para reemplazar el parcial completo o, más probablemente, agregar el nuevo parcial (que contiene el paso) al final de su actual pasos.

Esto es similar a todos los ejemplos que habrá visto en los que las personas agregan un comentario al final de los comentarios de su blog (esperen usar link_to_remote en lugar de remote_form_for) ver 3/4 del camino a través de http://media.rubyonrails.org/video/rails_blog_2.mov

Puede ver los documentos para link_to_remote aquí: http: // api. rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html

Otros consejos

Sugiero usar link_to_remote como sugiere RichH. Parece que el truco para ti es hacer un seguimiento de @i . Lo pondría como parámetro de URL en link_to_remote , o en el objeto de sesión. Sugeriría la sesión, parece más fácil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top