2017-06-20 4 views
0

Meine App verwendet Rails 5.1 und wenn ich auf link_to mit remote: true klicke, bekomme ich einen InvalidCrossOriginRequest Fehler. Nach dem Deaktivieren des Fälschungsschutzes beendet die App eine vollständige GET Anfrage an den Server und zeigt das Javascript an. HierRails `remote: true` macht keine AJAX-Anfrage

ist der Link:

= link_to 'Example', example_url, remote: true 

example.js.erb:

$('.example').html('alert("example message")'); 

Route:

scope :js, defaults: { format: :js } do 
    #### Example 
    get 'example', to: 'examples#example' 
end 

Controller:

def example 
    respond_to do |format| 
     format.html { redirect_to root_url, alert: 'Page not accessible' } 
     format.js 
    end 
end 

enthalten ich das Javascript in meiner Vorlage:

= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' 

Und ich hinzugefügt, um die Asset-Pfade js notwendig:

//= require_self 

// jQuery 
//= require jquery 
//= require jquery_ujs 
+0

* Die App landet eine vollständige GET-Request an den Server zu machen und die Javascript-Anzeige * Was Sie erwarten es zu tun? – Pavan

+0

@Pavan Es sollte stattdessen eine AJAX-Anfrage stellen. -> 'remote: true' – jonhue

+0

Sie erwähnten, dass es * das Javascript * anzeigt. Das bedeutet nicht, dass es eine AJAX-Anfrage * macht? – Pavan

Antwort

0

Das Problem stellte sich heraus, ein Stück Javascript sein, die ich ausgeführt wurde.

e.stopPropagation(); 
1

Sie geben das Format mit respond_to in Ihrem Controller:

+0

Das gibt mir einen 'UnknownFormat'-Fehler. – jonhue

+0

Können Sie mit einer normalen Route erneut versuchen? (Nicht mit 'defaults defokussiert: {format:: js}') – Aschen

+0

Ich habe tatsächlich beides versucht. Scoped gibt den oben genannten Fehler zurück, uncoped bekomme ich einen Cross-Origin-Fehler - nach dem Ausschalten des Forget-Schutzes wird dann wieder eine vollständige GET-Anfrage gestellt. Also bin ich wieder da, wo ich angefangen habe. – jonhue

Verwandte Themen