5

如何将 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中的“动态形式的多个子模型”教程。

4

2 回答 2

5

好的,我对你在做什么有点困惑,但我会尝试提出一些建议。

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

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

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

于 2009-05-09T19:00:12.820 回答
0

我建议link_to_remote按照 RichH 的建议使用。对你来说,诀窍似乎是跟踪@i. 我要么把它作为 URL 参数放在 中link_to_remote,要么放在会话对象中。我会建议会议——它似乎更容易。

于 2009-05-16T04:14:01.550 回答