Colocar onClick evento para link_to_function das Rails
-
08-07-2019 - |
Pergunta
Como faço para anexar um evento onclick de um link_to_function
tal que clicar sobre as atualizações de eventos um elemento na página (usando parciais)?
Quando o usuário clica no link gerado, eu gostaria de atualizar a parcial contendo o código para que i
é atualizado.
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
Eu tenho um parcial de uma forma maior, que contém apenas:
<%= add_step_link(technique_form) %>
Eu estou tentando manter o controle do número de passos em uma técnica. Na forma que estou criando, os usuários podem adicionar novos passos para um conjunto de instruções. Agora, eu tenho campos padrão para as etapas 1-7. Adicionando uma etapa, você recebe a etapa 8. O problema é que os passos subsequentes são numeradas '8', também.
Eu estou estendendo os "Múltiplos modelos da criança de forma dinâmica" tutorial em http: // railsforum.com/viewtopic.php?id=28447 para minhas próprias finalidades.
Solução
Ok, eu estou um pouco confuso com o que você está fazendo, mas eu vou tentar e fazer algumas sugestões.
Ao invés de uso link_to_function , use link_to_remote . Link para chamadas de função javascript, mas o que você actally quer fazer é chamada de volta para um controlador que, em seguida, executa alguns RJS para substituir a plena parcial, ou, mais provavelmente, acrescentar o novo parcial (contendo o passo) para o fim de seu atual passos.
Este é semelhante a todos esses exemplos, você terá visto onde as pessoas acrescentar um comentário ao final de seus comentários do blog (esperar usando link_to_remote em vez de remote_form_for) ver 3/4 do caminho através de http://media.rubyonrails.org/video/rails_blog_2.mov
Você pode ver a documentação para link_to_remote aqui: http: // api. rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html
Outras dicas
Eu sugiro usar link_to_remote
como RichH sugere. O truque para você parece que é manter o controle de @i
. Eu quer colocá-lo como um parâmetro de URL em link_to_remote
, ou no objeto de sessão. Eu sugiro a sessão-parece mais fácil.