próbuję wdrożyć modele zagnieżdżone, tutaj jest zapis pliku trasa:Jak zaimplementować zdalny: true function without link_to?
resources :projects do
resources :instances
end
Poniżej znajduje się fragment regulatora projektu:
# GET /projects/new
def new
@project = Project.new
@project.instances.build
end
i widok forma projektu:
<%= simple_form_for(@project) do |f| %>
...
<%= label_tag :instance_count, "Instance Count" %>
<%= select_tag :instance_count, options_for_select([0, 1, 2, 3, 4, 5], 0) %>
...
<% end %>
Teraz, gdy zmieniam liczbę wystąpień instancji, muszę wyświetlać pola instancji te wiele razy poniżej powyższego formularza. Oto kod częściowego za to:
<%= form.simple_fields_for :instances do |i| %>
...
<% end %>
Zasadniczo muszę zadzwonić <%= render 'instances/form', form: f %>
z pliku javascript projektu. Powinno działać jak link z opcją remote: true
. Ale w tym przypadku nie ma łącza, ale w przypadku zdarzenia zmiany należy wyświetlić formularz. Jak mam to wdrożyć?
po kliknięciu '@project [: instance_count]' i zmienić numer, który chcesz wyświetlić inną liczbę 'instances' pól wejściowych? Czy to wymaga AJAX? może wystarczy tylko wsłuchać się w to wydarzenie click w tym div, aby dołączyć nowy div na tej stronie, a kiedy przesłać formularz, upewnij się, że przesyłka działa dla tych pól .... Mam na myśli opublikowanie odpowiedzi .. Dodawanie pola wejściowe są trochę skomplikowane, ponieważ formularz ma 'token', który unika CSRF, także przesłanie musi być wykonane może z' Javascript' i będziesz musiał utworzyć żądanie jquery '.post()' –
Twój trigger to kliknięcie na '<% = select_tag: instance_count, options_for_select ([0, 1, 2, 3, 4, 5], 0)%>' so '$ ('# select_tab'). click (// dodaj wejście div na stronie w zależności od wyniku div .value()); ', nie ma interakcji serwera. Następnie musisz wykonać żądanie 'post' w pliku javascript za pomocą tej funkcji https://api.jquery.com/jQuery.post/ –