Вопрос

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

Это было полезно?

Решение

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

Вместо использования 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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top