Я немного растерялся. Во многих вопросах о stackoverflow, которые я читал, вам нужно jquery-ujs для управления вашим кодом javascript, особенно если вы хотите, чтобы эти ссылки уничтожения работали. Если я захожу на эту страницу, чтобы следовать всем инструкциям по установке, я должен сказать, что мне нечего делать.
Поскольку я использую Rails 3.1 Я должен следовать этому:
Для автоматической установки в Rails используйте гем "jquery-rails". Поместите это в свой Gemfile:
gem 'jquery-rails', '>= 1.0.12'
И запустить: $ bundle install
Этот следующий шаг зависит от вашей версии Rails.
а. Для Rails 3.1 , добавьте эти строки в начало вашего файла app / assets / javascripts / application.js:
//= require jquery
//= require jquery_ujs
Но для Rails 3.1 это уже сделано после создания нового приложения rails.
Если я запускаю $ rails generate jquery:install
, я получаю следующий вывод:
deprecated You are using Rails 3.1 with the asset pipeline enabled, so this generator is not needed.
The necessary files are already in your asset pipeline.
Just add `//= require jquery` and `//= require jquery_ujs` to your app/assets/javascripts/application.js
If you upgraded your app from Rails 3.0 and still have jquery.js, rails.js, or jquery_ujs.js in your javascripts, be sure to remove them.
If you do not want the asset pipeline enabled, you may turn it off in application.rb and re-run this generator.
Хорошо, ничего нового. Но почему мои ссылки уничтожения все еще не работают. Поэтому я задаю себе вопрос, где находятся эти файлы jquery? Когда я читаю инструкцию по установке jquery для другой версии rails, там всегда говорят мне скопировать эти файлы (jquery.js, jquery-ujs.js) в определенное место. Только как пользователь Ruby 3.1 вам не нужно делать это. Но почему? Я не могу найти эти файлы. Являются ли они частью драгоценного камня jquery-rails? Если да, почему мои ссылки уничтожения все еще не работают? Это действительно проблема JQuery? Я имею в виду, если я изменю помощника с link_to
на button_to
, он работает. Так как же это может произойти, если это должно быть проблемой jquery? Это может не иметь значения для меня, но я не хочу использовать кнопку формы. Кроме того, я не могу поверить, что такое приложение, как Rails, содержит такую большую проблему в своих общих сгенерированных шаблонах.
Так как это исправить, не меняя хелпер link_to
и не уходя от javascript ( Railscast )?
Обновление 1
- файл макета имеет
<%= javascript_include_tag "application" %>
config.assets.enabled = true
установлено
Обновление 2
Вот источник для упомянутых ссылок уничтожения:
<%= link_to 'Destroy', @post, confirm: 'Are you sure?', method: :delete %>
Обычно он должен удалять сообщение, но вместо этого браузер указывает на местоположение этого сообщения, например, http://domain/posts/2
.
Если вы запустите это с button_to
вместо link_to
, оно будет работать, но тогда это кнопка формы.
Обновление 3
Хорошо, ссылки уничтожения работают в Firefox, но я пользователь Google Chrome и хочу, чтобы он там тоже работал. Есть ли решение для этого?
Обновление 4
Chrome Inspector создает исключение DOMEx в строке 5122: var ret = matches.call( node, expr );
message: "SYNTAX_ERR: DOM Exception 12"
Но эта ошибка возникает на каждой гиперссылке, независимо от того, является ли она ссылкой уничтожения.
Ссылка уничтожения выдает TypeError . , но я не могу понять, идет ли он из jquery.js или из встроенного расширения chrome. jquery-ujs.js выдает ошибку и сообщение было " Вы уверены? ". Это текст, определенный рельсами для сообщения подтверждения. Поэтому я удалил опцию подтверждения, и после этого удаление сработало.
Как настроить опцию подтверждения в Chrome?