5

Как подключить событие onclick к link_to_function так, чтобы при нажатии на событие обновлялся элемент на странице (с использованием частичных)?Присоединение события onClick к link_to_function Rails

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

ответ

5

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

Вместо того чтобы использовать 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

Я уверен, что link_to_remote - это то, что вам нужно. Вы делаете удаленный вызов на сервер, возвращая HTML (или Javascript), который вы можете вводить на страницу. –

0

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

Смежные вопросы