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

当用户点击生成的链接时,我想刷新包含代码的部分,以便 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 中的教程我自己的目的。

有帮助吗?

解决方案

好的,我对你的工作有点困惑,但我会尝试提出一些建议。

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

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

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

其他提示

我建议使用 link_to_remote ,就像RichH建议的那样。你的诀窍似乎是跟踪 @i 。我要么将它作为URL参数放在 link_to_remote 中,要么放在会话对象中。我建议会议 - 看起来更容易。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top