1

J'utilise gmaps4rails et maintenant quand je clique sur un marqueur apparaît des informations de la base de données, j'ai besoin de mettre un lien dans le marqueur. Comment je fais?Placez un lien dans un infowindow en utilisant gmaps4rails

Modèle:

def gmaps4rails_address 
    city 
end 

def gmaps4rails_infowindow 
    "<h4>#{city}</h4>" 
end 

Controller:

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 

Répondre

0

Je ne recommande pas que vous utilisez la méthode gmaps4rails_infowindow: voir les détails ne doivent pas être données à la couche de modèle.

Vous devez plutôt configurer le infowindow dans le contrôleur, en utilisant une partie:

@json = Posto.all.to_gmaps4rails do |posto, marker| 
    marker.infowindow render_to_string(:partial => "/path_to/your_template", :locals => { needed_locales }) 
end 

Les détails sont dans le gem's wiki. (vous pouvez même utiliser des templates js mais ce n'est pas la question et c'est aussi expliqué dans le wiki)

+0

s'il vous plaît pourriez me dire quel serait mon modèle? – Ludimila

+0

Il suffit de créer une partie Rails de base qui contient ce dont vous avez besoin ... – apneadiving

+0

Ne répond pas? – apneadiving

0

Voici deux façons.

directement dans le contrôleur:

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 

Et en utilisant une partie du contrôleur:

hashes = Gmaps4rails.build_markers(collection) do |item, marker| 
    marker.infowindow render_to_string(:partial => "/structures/info_window", :locals => { :structure => item}) 

Et la partie peut être tout ce que vous aimez:

# 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" 
+0

J'ai posé cette question il y a quatre ans alors que j'étudiais encore les rails 2. Mais de toute façon, merci. – Ludimila

Questions connexes