Невозможно частично отобразить с помощью Gmaps4Rails

У меня есть карта, на которой есть маркер, основанный на штате США. Каждый штат имеет n номеров городов.

У меня есть модель состояния, контроллер и модель города, контроллер.

Когда я нажимаю на маркер штата, я хочу, чтобы список городов отображался в информационном окне.

Вся эта информация появляется на главной странице.

Это то, что я сделал до сих пор: -

home_controller.rb

def index
    @states = State.all.to_gmaps4rails do |state,marker|
        marker.infowindow render_to_string(:partial => "/states/gmaps4rails_infowindow", :locals => {:object => state})
        marker.json({:id => state.id})
    end
end

главная/index.html.haml

=gmaps({"map_options" =>{ "auto_zoom" => false, "zoom" => 3}, "markers" => { "data" => @states } })

state_controller.rb

def gmaps4rails_infowindow
  @state = Gmaps.map.markers
end

состояния/_gmaps4rails_infowindow.html.haml

[email protected] do |city|
    =city.name

Излишне говорить, что это не работает. Может кто-нибудь, пожалуйста, помогите мне?


person Dev R    schedule 12.05.2012    source источник


Ответы (1)


Что ж, твой home_controller.rb в порядке. вы пишете здесь, что хотите использовать партиал с локальной переменной с именем object.

В самом партиале вы пишете:

[email protected] do |city|
  =city.name

Переменная экземпляра там не определена, вы определили локальную переменную чуть выше.

Заменить:

=object.cities.each do |city|
  =city.name

Оттуда это должно работать.


Уведомление:

def gmaps4rails_infowindow
  @state = Gmaps.map.markers 
end

is:

  • бесполезно: вы определяете информационное окно в контроллере

  • неправильно: Gmaps.map.markers живет только как переменная js

person apneadiving    schedule 12.05.2012
comment
спасибо, это отлично работает :), я буду беспокоить вас в ближайшие дни, так как я использую ваш драгоценный камень для одного из моих приложений. - person Dev R; 12.05.2012
comment
потому что это имя, которое ВЫ дали локальной переменной в партиале. - person apneadiving; 12.05.2012
comment
Я понимаю это, но мой вопрос был в том, почему мы должны давать имя объекту? - person Dev R; 12.05.2012
comment
назовите его barbara, если хотите :) был просто примером - person apneadiving; 12.05.2012