将onClick事件附加到Rails的link_to_function

问题描述 投票:5回答:2

如何将onclick事件附加到link_to_function,以便单击该事件刷新页面上的元素(使用局部)?

[当用户单击生成的链接时,我想刷新包含代码的部分,以便更新i

 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 

我有一个较大的部分,只包含:

<%= add_step_link(technique_form) %>

我正在尝试跟踪技术中的步骤数。在我创建的表单中,用户可以将新步骤添加到一组说明中。现在,我具有步骤1-7的默认字段。添加一个步骤,您将获得步骤8。问题是后续步骤也被标记为“ 8”。

我出于个人目的扩展了http://railsforum.com/viewtopic.php?id=28447中的“动态形式的多个子模型”教程。

ruby-on-rails prototype onclick form-for link-to-function
2个回答
5
投票

[好,我对您的工作有些困惑,但是我将尝试提出一些建议。

而不是使用link_to_function,请使用link_to_remote。链接到函数调用javascript,但是您实际上想要做的是回调到控制器,该控制器然后运行一些rjs来替换完整的部分,或者更有可能将新的部分(包含步骤)附加到当前的末尾脚步。

这类似于您将看到的所有这些示例,在这些示例中,人们在博客评论的末尾添加评论(请使用link_to_remote而不是remote_form_for),请参见http://media.rubyonrails.org/video/rails_blog_2.mov的3/4。>

您可以在此处查看link_to_remote的文档:http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html


0
投票

我建议使用RichH建议的link_to_remote。对您来说,技巧似乎是跟踪@i。我要么将其作为URL参数放在link_to_remote中,要么放在会话对象中。我建议会议-似乎更容易。

© www.soinside.com 2019 - 2024. All rights reserved.