Rails render_to дает 406 неприемлемую ошибку

0

Итак, я пытался исправить свой вариант скрытия твита. Он работал один раз, но с тех пор, как я не сохранил его в то время, я потерял все, что было у меня.

Моя функция довольно проста, вы нажимаете 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

все это работает.. даже с вышеописанным, он все еще скрывает его, но я получаю пустой экран, а не приятный аякс.

  • 0
    Когда действие имеет пустой respond_to блок статус ответа 406 нормально, так как это пустой блок указывает на то, что действие не реагирует на любой формат. Если у вас есть format.js... вы должны получить ошибку (статус 500), потому что rails не может найти подходящее представление (по крайней мере, если нет файла app / views / THERESOURCE / hide.js.SOMEHANDLER). Чего вы на самом деле пытаетесь достичь?
  • 0
    Маржа - я просто обновляю свою БД, меняя ее статус с нового на скрытый, чтобы он не отображался в общем виде. Js там, чтобы скрыть твит и обновить без обновления страницы.
Показать ещё 2 комментария
Теги:
twitter

2 ответа

0
Лучший ответ

Чтобы завершить это, убедитесь, что все ваши файлы jQuery установлены правильно, и все их коллекции находятся в ваших соответствующих областях. В моем случае мне понадобилось следующее, чтобы заставить all respond_to работать. Я знаю, я знаю, глупо от меня.

У вашего Application.js должны быть эти.

 /= require jquery
//= require jquery_ujs
//= require jquery.ui.touch-punch
//= require_tree .

и все остальное Gem wise должно быть в вашем Gemfile или вручную установлено. Спасибо всем за помощь в этом.

0

Я убежден, что это ошибка рельсов, потому что я столкнулся с тем же самым в 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-адресу, будет иметь значение. Или как изменить это в самом маршруте.

  • 0
    Спасибо за помощь. Я на самом деле понял это после того, как сошел с ума и начал с нуля, кажется, я должен был пропустить /= require jquery_ujs в моем application.js.
  • 0
    Теперь все работает как надо. Мой плохой на этом, учиться на ошибках, что это все правильно? :) Спасибо вам обоим за помощь. Кстати, creativereason = прямая ссылка или нет, было сброшено 406 ошибок, я полагаю, потому что в файле ujs отсутствовал материал для jquery.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню