5

Jak dołączyć zdarzenie onclick do link_to_function, tak aby kliknięcie zdarzenia odświeżyło element na stronie (przy użyciu części)?Dołączanie zdarzenia onClick do funkcji łączenia railsów

Gdy użytkownik kliknie wygenerowany link, chciałbym odświeżyć część zawierającą kod, aby zaktualizować 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 

mam częściowym w większej formie, która zawiera tylko:

<%= add_step_link(technique_form) %> 

Ja próbuje śledzenie liczby etapów w technice. W formularzu, który tworzę, użytkownicy mogą dodawać nowe kroki do zestawu instrukcji. W tej chwili mam domyślne pola dla kroków 1-7. Dodanie jednego kroku daje ci krok 8. Problem polega na tym, że kolejne kroki mają również numer "8".

Rozszerzam samouczek "Wiele modeli podrzędnych w dynamicznej formie" w http://railsforum.com/viewtopic.php?id=28447 dla własnych celów.

Odpowiedz

5

Ok, jestem trochę zdezorientowany tym, co robisz, ale zamierzam spróbować coś zasugerować.

Zamiast używać link_to_function użyć link_to_remote. Link do funkcji wywołuje javascript, ale to, co naprawdę chcesz zrobić, to oddzwonić do kontrolera, który uruchamia niektórych rjs, aby zastąpić pełne częściowe, lub bardziej prawdopodobne, dołączyć nowe częściowe (zawierające krok) do końca bieżącego kroki.

Jest to podobne do tych wszystkich przykładów można widzieli, gdzie ludzie dołączyć komentarz do końca swoich blogach komentarzach (oczekiwać stosując link_to_remote zamiast remote_form_for) patrz 3/4 drogi przez http://media.rubyonrails.org/video/rails_blog_2.mov

Można zobacz dokument dla link_to_remote tutaj: http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html

+0

Jestem pewien, że link_to_remote jest tym, czego potrzebujesz. Wykonujesz zdalne połączenie z serwerem, zwracając kod HTML (lub Javascript), który możesz wprowadzić na stronę. –

0

Proponuję użyć link_to_remote jak sugeruje RichH. Wygląda na to, że trzymasz się drogi @i. Chciałbym umieścić go jako parametr adresu URL w link_to_remote lub w obiekcie sesji. Proponuję sesję - wydaje się łatwiej.

Powiązane problemy