Присоединение события onClick к функции Rails link_to_function - PullRequest
5 голосов
/ 07 мая 2009

Как мне прикрепить событие 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 для своих собственных целей.

Ответы [ 2 ]

5 голосов
/ 09 мая 2009

Хорошо, меня немного смущает то, что вы делаете, но я постараюсь сделать несколько предложений.

Вместо использования link_to_function , используйте link_to_remote . Ссылка на вызовы функций 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

0 голосов
/ 16 мая 2009

Я предлагаю использовать link_to_remote, как предлагает RichH. Трюк для вас, кажется, отслеживает @i. Я бы поставил его в качестве параметра URL в link_to_remote или в объекте сеанса. Я бы предложил сессию - кажется, проще.

...