Je n'arrive pas à comprendre, pourquoi mon javascript n'est pas exécuté (et ce n'est vraiment pas exécuté).Javascript n'est pas exécuté
/app/assets/javascripts/application.js:
//= require jquery
//= require bootstrap-sprockets
//= require turbolinks
//= require jquery_ujs
//= require_tree .
/app/controllers/project_controller.rb:
def upload
@projects = Project.all.order(updated_at: :desc)
@project = Project.find(params[:id])
respond_to do |format|
format.html
format.js {render layout: false}
end
end
/app/views/projects/show.html.erb :
<%= link_to project_upload_path, :project => @project.id, class: "btn btn-default" do %>
Upload
<%= glyph("plus") %>
<% end %>
/app/views/projects/upload.html.erb:
<div class="row">
<div class="col-xs-12">
<h2>Upload File to <%= @project.name %> project</h1>
</div>
<br>
<div class="col-xs-12">
<%= render :partial => "uploadform", :action => "savefile" %>
</div>
</div>
/app/views/projects/_uploadform.html.erb:
<%= form_for :upload, url: {action: "savefile"}, :multipart => true do |f| %>
<%= f.hidden_field(:project_id, :value => params[:id]) %>
<%= f.file_field :file, input_html: { hidden: true }, label: 'Upload Attachment' %>
<input id="file-display" class="input-large uneditable-input" type="text">
<%= f.submit "Save File", :class => "btn btn-default btn-file", :id => "upload-btn" %>
<% end %>
/app/views/projects/upload.js.erb:
$(document).on('ajax:success', function() {
alert("Test");
});
J'ai tout essayé. J'ai ajouté et supprimé "{layout: false}" dans mon contrôleur. J'ai essayé "page: changer" et "turbolinks: charger" dans mon upload.js.erb (au lieu de "ajax: succès"). J'ai essayé toutes les fonctions Java-Ready dans "_uploadform.js.erb" (au lieu de "upload.js.erb"). J'ai essayé "remote: true" dans link_to (show.html.erb) - mais ensuite il n'exécute que js.erb (juste l'alerte est apparue). J'ai également mis à jour Rails de 4.2.1 à 4.2.7.1 et essayé "// = require jquery.turbolinks" dans application.js (avec toutes les fonctions de document prêt ci-dessus).
Comme vous pouvez le voir dans mon journal, il semble qu'il ne marche pas répondre avec le Javascript:
Started GET "/projects/upload/20" for 127.0.0.1 at 2016-10-05 14:05:48 +0200
Processing by ProjectsController#upload as HTML
Parameters: {"id"=>"20"}
Project Load (0.0ms) SELECT "projects".* FROM "projects" WHERE "projects"."id" = ? LIMIT 1 [["id", 20]]
Rendered projects/_uploadform.html.erb (0.0ms)
Rendered projects/upload.html.erb within layouts/application (2.4ms)
Completed 200 OK in 327ms (Views: 324.8ms | ActiveRecord: 0.0ms)
S'il vous plaît aidez-moi. Je ne comprends pas pourquoi cela ne fonctionne pas du tout.
Je ne pense pas qu'il y ait un 'ajax: sélecteur Success'. Vouliez-vous dire '$ (document) .ajaxSuccess' – vlaz
Non. Je ne sais pas d'où je viens, mais ça ne marche pas avec" turbolinks: load "ni" page: change ", aussi. Donc, oui, peut-être "ajax: le succès" est faux, mais les autres sélecteurs ne fonctionne pas trop. –
Je ne sais pas si cela a une différence, mais essayez de charger 'jquery_ujs' après' jquery' dans votre 'application.js' –