2016-08-22 4 views
0

Ich verstehe, wie eine partielle beim Klicken auf einen normalen Link zu rendern, verwenden Sie einfach: remote, aber ich habe Probleme beim Rendern eine partielle, wenn mein Suchformular über das submit_tag eingereicht wird.Rendern Sie eine partielle, nachdem submit_tag in Rails geklickt wurde

Dies ist mein Code in index.html.erb

<%= form_tag(transports_path, :method => "get", id: "search-form") do %> 

<%= select_tag "searchfrom", options_for_select(airport_names, params[:searchfrom]), :prompt => "Select From" %> 
<%= select_tag "searchto", options_for_select(airport_names, params[:searchto]), :prompt => "Select To" %> 

<%= submit_tag "Search" %> 
<% end %> 

<%= render :partial => 'transports/transports' %> 

ich die Transporte/Transporte teilweise machen möchten, nachdem die submit_tag geklickt wird, und ich will auch nicht, dass es in eine link_to Link zu transformieren .

+1

Wenn Sie wissen, wie man eine partielle mit 'link_to' mit' remote: true' rendert, dann können Sie dasselbe auch mit einem Formular machen. Fügen Sie einfach 'remote: true' zu ​​Ihrem' form_tag' hinzu. ** Beispiel: ** '<% = form_tag transports_path,: method =>" get ", id:" search-form ", remote: true do%>' – dp7

+0

Was @dkp Erklärung ist richtig, aber aus Ihrem Code, Sie sollten eine "POST" -Methode Formular, dann von Controller geben Sie ein Ajax-Javascript, nur um den partiellen Inhalt zu ändern (und/oder) entfernen Sie das Formular oder was auch immer – ksugiarto

+0

@ksugiarto ich direkt von der Datenbank anfordern. '@transports = Transport.where (" strtloc LIKE? UND endloc LIKE? "," # {params [: searchfrom]}% "," # {params [: searchto]}% ") Das ist der Suchvorgang mein Controller. – Robert

Antwort

0

erlauben Sie mir, auf dem Antwortabschnitt zu erklären, da es wahrscheinlich nicht zu kurz ist.

Korrekt, wenn Sie vom Formular senden, senden Sie diese searchfrom und searchto Parameter an Controller, um Abfrage Zutaten werden. Dann kehrt in js Format von -Controller, so etwas wie:

Dann fügen Sie neue Art der Rückgabedatei erstellen wie create.js.erb, enthält so etwas wie:

$("#transports_list ").html("<%= escape_javascript(render 'transports/transports') %>"); 

Aber bitte korrigieren Sie mich, so lange, wenn meine letzte RoR-Codierung: P

Diese Methode ist so alt, aber mehr oder weniger das Konzept kann Ihre que erfüllen Diese blog kann Ihnen helfen zu verstehen, was ich dachte.

+0

Danke für die Antwort. Das hat endlich für mich funktioniert. Was ich auch hinzugefügt habe, war das 'remote: true' zum' form_tag' und es funktionierte wie ein Zauber! Vielen Dank. Dadurch wurde auch die hässliche Suchanfrage in meiner URL beseitigt. Deshalb liebe ich RoR. – Robert

+0

Ja ist es, ich weiß nicht, wie sehr es dir hilft, aber gut zu hören, wenn du findest, dass deine Antwort sich sehr von meiner unterscheidet, kannst du sie immer selbst beantworten, damit Leute davon schauen und lernen können :) – ksugiarto

Verwandte Themen