2017-10-14 2 views
0

Ich weiß, das wurde hier beantwortet: Javascript Include Tag Best Practice in a Rails Application, aber ich bekomme nichts.Schienen enthalten js in spezifische Sicht

Wie kann ich angeben, welche js-Datei im Tag: defaults enthalten ist? Ich habe versucht, den Pfad zu js anzugeben, anstatt das Tag zu verwenden.

In application.html.erb:

<head> 
    <title>...</title> 
    <%= csrf_meta_tags %> 

    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> 
    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> 
    <%= yield :head %> 
</head> 

im Blick:

<% content_for :head, javascript_include_tag('qEditor/http_cdn.quilljs.com_1.3.2_quill') %> 

Diese Datei ist im app/assets/javascripts/qEditor und den Pfad IDE nach richtig ist. Ich habe die application.js von //= require_tree . zu //= require_directory . geändert, damit die js-Datei nicht woanders geladen wird. Es funktioniert nicht ...

Können Sie mir helfen, dies zu lösen? Ich bin wirklich neu in Schienen. Danke

UPDATE

application.html.erb:

<!DOCTYPE html> 
<html> 
<head> 
    <title>....</title> 
    <%= csrf_meta_tags %> 
    <%= content_for :assets do %> 
    <%end%> 
    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> 
    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> 
</head> 

<body> 

<div class="container"> 
    <%= link_to 'Home', root_path, class: 'btn btn-default' %> 
    <button onclick="toggleTodos()" class="btn btn-default">Toggle TODO's</button> 

    <% flash.each do |key, value| %> 
     <div class="alert alert-<%= key %>"><%= value %></div> 
    <% end %> 


    <div class="jumbotron"> 
    <%= yield %> 
    </div> 

</div> 

</body> 
</html> 
+0

Sie könnten die js-Datei stopfen, um sie manuell zu laden, dann fügen Sie sie Ihrer Datei "assets.rb" in der Datei "Rails.application.config.assets.precompile" hinzu und fügen sie schließlich in Ihrer Ansicht mit einem 'javascript_include_tag' hinzu . –

+0

Stubbing ist nicht erforderlich, wenn Sie die Datei in 'vendor/assets' platzieren, wo Sie Lieferanteninhalt trotzdem platzieren sollten @ SebastiánPalma – max

+0

Ich sehe jetzt, danke für den Tipp @max. –

Antwort

2

Der richtige Ort für Anbieter Inhalt (alles, was nicht von Ihnen bestimmten oder Autor ist Projekt) ist in /vendor/assets/javascripts. Dies löst auch Ihr Problem, da vendor/assets von //= require_tree . nicht benötigt wird.

So verschieben Sie es auf /vendor/assets/javascripts/http_cdn.quilljs.com_1.3.2_quill.js.

/vendor/assets ist auf Sprockets Standard Assets Lookup-Pfade.

<head> 
    <title>...</title> 
    <%= csrf_meta_tags %> 
    <%= content_for :assets do %> 
    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> 
    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> 
    <% end %> 
</head> 

Seit content_for verkettet können Sie fügen Sie einfach ein content_for(:assets) zusätzliche Inhalte hinzufügen:

<% content_for :assets do > 
    <%= javascript_include_tag('http_cdn.quilljs.com_1.3.2_quill') %> 
<% end %> 

Dies auch Sie Fall verwenden provide oder concat: false in können Sie den Block durch das Layout zur Verfügung gestellt zu überschreiben.

+0

Ich dachte, es funktioniert, aber es ist nicht ... Entschuldigung. Könntest du meine application.html.erb nachsehen, wenn sie korrekt ist? – Wlad

+0

"Es funktioniert nicht" ist die nutzloseste Information der Welt. Was speziell ist das nicht funktioniert? Sie müssen Ihre Anwendung selbst debuggen. – max

+0

Was nicht funktioniert ist, dass js-Datei nicht in der Ansicht geladen ist. Ich vermute, dass ich nicht wirklich verstehe, wie ich in application.html.erb "<% = content_for: assets do%>" inoporieren sollte, weil andere Teile ziemlich klar sind. – Wlad

Verwandte Themen