Я создаю приложение 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} ) ) %>" );
<%= link_to plotdetails_plot_path(:id => plot.id, :format => "js"), :remote => true do %>
, но потом получил ошибку Template is Missing. Не уверен, что это шаг вперед или назад. - person Gavin   schedule 17.05.2016