Google Maps InfoBox, вызывающий ошибку ActionController::UnknownFormat в приложении Rails

Я создаю приложение Rails, которое включает карту с маркерами (также известные как «графики» в приложении). При щелчке по маркеру/участку рядом с маркером появляется информационное окно. Я пытаюсь добавить функцию, при которой нажатие на информационное поле отображает часть карты вместе с дополнительными подробностями, относящимися к этому конкретному сюжету.

Я использую Gmaps4Rails, и описанная выше функция отлично работает при реализации со стандартными информационными окнами Google, но если я попытаюсь использовать плагин InfoBox, чтобы получить все преимущества стиля информационных окон, я получаю сообщение об ошибке.

ActionController::UnknownFormat

Снимок экрана с сообщением об ошибке rails здесь

Глядя на журнал, кажется, что запрос правильно отправляется как JS с Infowindows, но по какой-то причине при использовании плагина InfoBox он отправляется как HTML.

Сообщение журнала с Infowindow это...

Начат GET "/plots/1/plotdetails" для ::1 в 2016-05-21 13:50:02 +0100 Обработка PlotsController#plotdetails как параметры JS: {"id"=>"1"} Загрузка графика (0,3 мс) SELECT "plots".* FROM "plots" WHERE "plots"."id" = $1 LIMIT 1 [["id", 1]] Визуализированные графики/_plotdetails.html.erb (0,1 мс) Визуализированные графики/детали сюжета. js.erb (4,0 мс) Завершено 200 OK за 17 мс (Просмотры: 14,4 мс | ActiveRecord: 0,3 мс)

Сообщение журнала с плагином InfoBox ниже...

Начат GET "/plots/2/plotdetails" для ::1 в 2016-05-17 18:52:38 +0100 Обработка PlotsController#plotdetails в виде параметров HTML: {"id"=>"2"} Загрузка графика (0,3 мс) ВЫБЕРИТЕ «графики».* ИЗ «графиков», ГДЕ «графики». «id» = $1 LIMIT 1 [[«id», 2]] Завершено 406 Неприемлемо за 3 мс (ActiveRecord: 0,3 мс)

ActionController::UnknownFormat (ActionController::UnknownFormat):
app/controllers/plots_controller.rb:95:in `plotdetails'

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

routes.rb

Rails.application.routes.draw do   
  resources :architects
  resources :plots do
    get :plotdetails, :on => :member
  end
  root 'plots#map'

plots_controller.rb (в контроллере больше кода, но это кажется важной частью)

  def plotdetails
    @plot = Plot.find(params[:id])
    respond_to do |format|
      format.js { render :layout => false }
    end
  end

представления/графики/map.html.erb

<%= render 'partials/menu' %>

<div id="plotdetails"></div>

<div id="map"></div>

<script type="text/javascript">

  buildMap(<%=raw @hash.to_json %>);

</script>

представления/графики/_infobox.html.erb

<%= link_to plotdetails_plot_path(:id => plot.id), :remote => true do %>
  <div id="infobox">
      <div id="infobox-img">
        <img src="<%= plot.img_link %>">
      </div>
      <div id="infobox-text">
        <h3><%= plot.title %></h3>
        <p>Architect: <%= plot.architect.name %></p>
        <p><%= plot.address %></p> 
      </div>
  </div>
<% end %>

представления/графики/_plotdetails.html.erb

<div>
      <ul>
          <li>plot.title</li>
          <li>plot.details</li>
      </ul>
</div>

представления/графики/plotdetails.js.erb

$( "#plotdetails" ).html( "<%= escape_javascript( render( :partial => "plotdetails", :locals => { :plot => @plot} ) ) %>" );

person Gavin    schedule 16.05.2016    source источник
comment
Запрос, вероятно, отправляется в формате HTML. Проверьте журнал. Причиной, скорее всего, является ошибка сценария, которая не позволяет обработчику Rails UJS перехватывать щелчок.   -  person max    schedule 17.05.2016
comment
Где вы устанавливаете обработчик кликов для инфобокса? Можете ли вы добавить этот код к своему вопросу?   -  person Michael Gaskill    schedule 17.05.2016
comment
Какую версию на рельсах вы сейчас используете?   -  person kajal ojha    schedule 17.05.2016
comment
Версия @kajal Rails — 4.2.6. @Michael - обработчик кликов для частичного рендеринга при нажатии на информационное поле — это link_to в _infobox.html.erb. Это то, что вы имели ввиду? @Max, думаю, ты прав. Я обновил вопрос с содержимым журнала. Не знаете, как лучше это исправить? Попытался добавить :format =› 'js' в link_to вот так <%= link_to plotdetails_plot_path(:id => plot.id, :format => "js"), :remote => true do %>, но потом получил ошибку Template is Missing. Не уверен, что это шаг вперед или назад.   -  person Gavin    schedule 17.05.2016


Ответы (1)


Поскольку response_to был удален из rails 4.2 в отдельный гем, я рекомендую вам использовать гем-ответчики.

Пожалуйста, ознакомьтесь с приведенной ниже ссылкой для более подробной информации.

Почему response_with удален из rails 4.2 в собственный драгоценный камень?

person kajal ojha    schedule 18.05.2016
comment
Спасибо за предложение. Я добавил «ответчиков» драгоценных камней в файл драгоценных камней, но все еще та же проблема. У меня был очень похожий фрагмент кода, работающий в другом приложении с rails 4.2.6, так что у меня есть ощущение, что здесь тоже происходит что-то еще. - person Gavin; 18.05.2016