我正在使用gmaps4rails,现在当我点击标记时出现数据库中的信息,我需要在标记内放置一个链接。我怎么样?
型号:
def gmaps4rails_address
city
end
def gmaps4rails_infowindow
"<h4>#{city}</h4>"
end
控制器:
def index
@postos = Posto.all
@markers = Posto.all.to_gmaps4rails
@json = Posto.all.to_gmaps4rails do |posto, marker|
marker.json "\"id\": #{posto.id}"
end
respond_to do |format|
format.html # index.html.erb
format.json { render json: @postos }
end
end
答案 0 :(得分:0)
我不建议您使用gmaps4rails_infowindow
方法:不应在模型层提供视图详细信息。
您应该使用partial:
在控制器中配置infowindow@json = Posto.all.to_gmaps4rails do |posto, marker|
marker.infowindow render_to_string(:partial => "/path_to/your_template", :locals => { needed_locales })
end
详细信息位于gem's wiki。 (你甚至可以使用js模板,但这不是问题,它也在wiki中解释)
答案 1 :(得分:0)
以下是两种方式。
直接在控制器中:
hashes = Gmaps4rails.build_markers(collection) do |item, marker|
marker.infowindow(ActionController::Base.helpers.link_to(item.name ||= 'Name?',preplan_path(item)).html_safe)
marker.title item.name
marker.picture({
# :url => "/assets/building_icon.png",
:url => "/assets/text.png",
:width => 32,
:height => 32
})
marker.lat item.latitude
marker.lng item.longitude
end
使用控制器中的部分:
hashes = Gmaps4rails.build_markers(collection) do |item, marker|
marker.infowindow render_to_string(:partial => "/structures/info_window", :locals => { :structure => item})
部分可以是你喜欢的任何东西:
# view/structures/_info_window.html.haml
= link_to structure.name, [structure.preplan, structure]
- unless structure.longitude.nil?
%br
= link_to "Drive to?", "https://maps.google.com/maps?daddr=#{structure.latitude},#{structure.longitude}", target: "_blank"