/ / Re-rendre le javascript lorsque le formulaire est soumis à l'aide de rails et jquery - jquery, ruby-on-rails

Re-rendre le javascript lorsque le formulaire est soumis à l'aide de rails et jquery - jquery, ruby-on-rails

Je suis un débutant qui utilise des rails et jquery et cherche partout un exemple simple montrant comment faire cela pendant des jours. J'ai une page, poweroutput.html.erb, qui montre la puissance du clientsystème d'énergie solaire pour une date particulière. Quand ils entrent une date différente, je veux qu’ils voient une sortie différente, mais sans avoir à recharger la page. Sur ma page, javascript et un formulaire (pour soumettre la date à laquelle un utilisateur souhaite voir la puissance de sortie) sont les suivants:

<head>
<script type="text/javascript">
// a lot of javascript
</script>
</head>

<% form_tag(poweroutput_path, :method=>"post", :id => "date-form", :remote => true ) do %>
<%= text_field_tag(
"dt", nil,
{  :id => "date-field",
:class => "dateformat-d-dt-m-dt-Y",
:value => Time.now.getlocal.strftime("%d.%m.%Y")
})
%>
<%= submit_tag "Go" %>
<% end %>

Tout ce que je veux, c'est que le javascript de ma page soit rendu à nouveau lors de l'envoi du formulaire. L’action du contrôleur de ma page est actuellement la suivante:

def poweroutput
# some code

if request.xhr?
@date = params[:dt]         # dt is posted when form is submitted
else
@date = Time.now.getlocal.strftime("%d.%m.%Y")
end

respond_to do |format|
format.html
format.js
end
end

Tout ce que je veux, c’est que le javascript de ma page soit restitué avec un @date quand mon formulaire est soumis. Est-ce que quelqu'un connaît un moyen simple de faire cela?

Réponses:

0 pour la réponse № 1

Si c'est beaucoup de javascript, alors:

  1. Mettez la date quelque part dans la page Web (par exemple, un champ masqué)
  2. Modifiez le javascript pour qu'il en obtienne la valeur.
  3. Créez une bibliothèque séparée .js pour JavaScript et chargez-la dans la page.

Ainsi, le navigateur profitera de la mise en cache du javascript, ce qui réduira à la fois la charge de votre serveur et le temps de téléchargement de la page.