Итак, я пытался исправить свой вариант скрытия твита. Он работал один раз, но с тех пор, как я не сохранил его в то время, я потерял все, что было у меня.
Моя функция довольно проста, вы нажимаете hide, и она скрывает твит. Вот что я имею в контроллере;
def hide
@newtweet = Newtweet.find(params[:id]).update_attribute(:stauts, 'new')
respond_to do |format|
format.js {flash[:notice] = "We've archives your tweet for later."}
end
end
Вот то, что у меня есть для моей ссылки;
<%= link_to "hide", hide_url(:id => tweetsy.id), :class => "btn btn-warning btn-sm hideit hidden-xs", :remote => true %>
и, наконец, вот что в моих маршрутах для этой ссылки;
match '/dashboard/hide/:id' => 'dashboards#hide', :as => :hide
У меня есть def hide, сидящий в моем контроллере панели управления.. и он работает, как только я добавляю
respond_to do |format|
end
даже... все это дает мне
Completed 406 Not Acceptable in 8ms (ActiveRecord: 1.8ms)
Не знаю, как я работал, и я собираюсь вытащить волосы. Если я добавлю format.js.. ту же старую вещь. Если я удалю
respond_to do |format|
end
все это работает.. даже с вышеописанным, он все еще скрывает его, но я получаю пустой экран, а не приятный аякс.
Чтобы завершить это, убедитесь, что все ваши файлы jQuery установлены правильно, и все их коллекции находятся в ваших соответствующих областях. В моем случае мне понадобилось следующее, чтобы заставить all respond_to
работать. Я знаю, я знаю, глупо от меня.
У вашего Application.js должны быть эти.
/= require jquery
//= require jquery_ujs
//= require jquery.ui.touch-punch
//= require_tree .
и все остальное Gem wise должно быть в вашем Gemfile или вручную установлено. Спасибо всем за помощь в этом.
Я убежден, что это ошибка рельсов, потому что я столкнулся с тем же самым в JSON-вызовах (как это описано здесь) даже с правильными маршрутами.
Если вы попытаетесь напрямую позвонить своей ссылке с локальным URL-адресом для hide, с расширением JS в конце, посмотрите, не прекратите ли вы получать 406 ошибок.
<%= link_to "hide", "/hide.js?id=" + tweetsy.id.to_s, :class => "btn btn-warning btn-sm hideit hidden-xs", :remote => true %>
Я знаю, что это похоже на хак, но у меня был небольшой успех в нескольких случаях с аналогичной проблемой с JSON. Может быть, у кого-то есть ответ с полностью квалифицированными.js или.json по URL-адресу, будет иметь значение. Или как изменить это в самом маршруте.
/= require jquery_ujs
в моем application.js.
respond_to
блок статус ответа 406 нормально, так как это пустой блок указывает на то, что действие не реагирует на любой формат. Если у вас естьformat.js...
вы должны получить ошибку (статус 500), потому что rails не может найти подходящее представление (по крайней мере, если нет файла app / views / THERESOURCE / hide.js.SOMEHANDLER). Чего вы на самом деле пытаетесь достичь?