Визуализация частичного прохода через JSON с использованием gMap - PullRequest
0 голосов
/ 03 февраля 2011

Я использую gMap (http://gmap.nurtext.de/) для отображения картографических данных в приложении Rails. Это работает так, что вы передаете им маркеры JSON, содержащие переменные, и он отображает их на карте Google. Когда вы нажимаетемаркер показывает HTML, содержащийся в переменной 'html'.

Работает нормально, но в данный момент я передаю html в JSON из модели. Это меня раздражает, потому что html должен быть вЯ хотел бы как-то передать частичное в JSON, которое затем отображается в html.

В настоящий момент в модели создается json с этим кодом

def as_json(options={})

    hash = Hash.new
    hash[:longitude] = longitude.to_i
    hash[:latitude] = latitude.to_i
    hash[:html] = "<p>#{title}</p>"
    hash[:popup] = true
    hash[:url] = "/listings/"+id.to_s

    return hash    
end

Ключ: html - это то место, куда я хотел бы поместить что-то вроде

hash[:html] = "<%= render :partial => "listings/bubble", :locals => {:listing => @listings.first} %>"

Частичное работает само по себе - я поставил его прямо в целях проверки. Всплывающий пузырь также работаеткогда у вас есть прямой HTML в JSON.

Однако, когда частичное передается внутри JSON, результирующий код будет

<div class="gmap_marker">
    <%= render :partial => "listings/bubble", :locals => {:listing => @listings.first} %>
</div>

Он просто заканчивается как строка в HTML, он никогдарендеринг.

Так что я думаю, есть два вариантаs Я ищу:

  1. Часть отображается до того, как она будет передана как JSON (например, в конце модели) или
  2. Эта часть отображается при отображении представления.

Не уверен, что это вопрос javascript или вопрос Rails, но любая помощь будет признательна!

Приветствия

1 Ответ

0 голосов
/ 03 февраля 2011

У вас уже есть правильная идея, но вы должны использовать функцию render_to_string :

hash[:html] = render_to_string(:partial => "listings/bubble", 
    :locals => {:listing => @listings.first})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...