Senden Ajax Requests in Schienen

Quelle: Internet
Autor: Benutzer

Vor kurzem schriftlich ein Blog-System in der Praxis zu üben, ist ein Problem aufgetreten, Benutzer, Kommentare hinzufügen, wenn sie AJAX Requests senden möchten, aber die Ajax in Schienen und Python nicht das gleiche, das Ajax in Python ist mit Js implementiert wird, Jquery und Schienen ist nicht das gleiche, In diesem Datensatz die Studie für eine lange Zeit endlich herausgefunden, ein wenig

Rahmen zu sagen, möchten wir eine AJAX-Anfrage senden

Rails ist ein Framework, und Ajax ist sehr eng mit dem Backend integriert.

Wenn wir eine AJAX-Anfrage senden möchten, können wir eine Eigenschaft hinzufügen, wenn die Vorlage generiert wird

Form Form, < % = Form_for (comment.new), Url: Post_comments_path (@post), Fernbedienung: True | f | % ≫ wenn ich Fernbedienung: True hinzufügen, ich sende einen AJAX-Request.

Ein Tag ist das gleiche < % = Link_to "Ajax-Request", "/ Xxxx/zu schaffen", Fernbedienung: True % > so dass Sie eine AJAX-Anfrage senden können.

Warum schicken wir einen AJAX-Request mit solch einer Einstellung? Durch die interne Verwendung von Schienen?

Schienen verwendet eine so genannte unaufdringlich JavaScript (UJS), um eingebaute JavaScript-Funktionalität zu montieren, wo Sieapp/assets/javascripts/application.jsEs ist innen geladen.//= require jquery_ujs, Dazu gehören

  • Können Sie Hyperlinks zu verwendet werden:methodParameter-Unterstützung nicht-GET-Methode
  • Verwenden von Hyperlinks, Schaltflächen und Formulare verwenden:remote => trueUnterstützung für Ajax
  • Hyperlinks, Schaltflächen und Formulare können verwendet werden"data-confirm"Parameter kann Confirm-Dialog-Fenster springen.
  • Die senden Taste kann verwendet werdendata-disable-withParameter schließen vorübergehend die Schaltfläche, wenn Sie das Formular senden, wiederholte Lieferung zu vermeiden

Hier hatte ich auch ein Problem, wenn ich es direkt geschickt, der Server erzählte mir, es gab keine token CSRF-Validierung

Hier müssen wir hinzufügen < % = Csrf_meta_tags % > an der Vorlage, damit es nicht schief gehen.

Der Prozess der AJAX-Anfrage

1. wenn wir klicken, um eine AJAX-Anfrage senden, werden in den entsprechenden Controller. Zum Beispiel bin ich hier in der Cmment-Steuerung.

Comments_conttroller.rbclass Commentscontroller Applicationcontroller Def erstellen pp Params @post = Post.where ( ID:params [: p Ost_id]). erste @comment = Comment.new (user_id:current_user.id, Post_id:params [: p Ost_id], Inhalt: Params [: Kommentar]    [: Content])      Respond_to | Format | Wenn @comment sichern Sie Format.html # im Inneren ist den HTML-Code generiert werden, ist die #执行的js代码 format.js Name und der Name der Methode, die ich auf der Seite konsistent hinzufügen möchten , Wie mich ist dies Create.js.erb Format.json {Rendern Json: @comment} am Ende Ende Private Def Comment_params P Arams.require (: Kommentar). zulassen (: Content) Endend

Respond_to | Format | "Api.rubyonrails.org/classes/ActionController/MimeResponds.html" kann auf der Website zu sehen Nutzung gehen.

Die Hauptsache ist, zu sehen, was wir zurück sind, und hier ist die AJAX-Request, so ist die Rückkehr format.js.

(2) zu den entsprechenden create.js.erb

$("#comment_content").append("<%= escape_javascript(render 'create') %>")
<%= escape_javascript(render 'create') %>  

Hier gehen Sie zurück, um die entsprechende Vorlage finden ich hier Rendern "erstellen", dann geht er zurück um zu finden (denn ich hier Kommentare, zurück in die Kommentare-Verzeichnis bin zu finden) _create.html.erb.

So können Sie eine AJAX-Anfrage senden.

Kontaktiere uns

Die Inhaltsquelle dieser Seite ist aus dem Internet, und vertritt nicht die Meinung von Alibaba Cloud; auf dieser Seite erwähnte Produkte und Dienstleistungen haben keine Beziehung zu Alibaba Cloud. Wenn der Inhalt der Seite Ihrer Meinung nach verwirrend ist, schreiben sie uns bitte eine E-Mail. Wir werden das Problem innerhalb von 5 Tagen nach Erhalt Ihrer E-Mail bearbeiten.

Wenn Sie Fälle von Plagiaten aus der Community feststellen, senden Sie bitte eine E-Mail an info-contact@alibabacloud.com und legen Sie entsprechende Beweise vor. Ein Mitarbeiter wird Sie innerhalb von 5 Werktagen kontaktieren.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.