1

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
4

2 に答える 2

1

この方法を使用することはお勧めしませんgmaps4rails_infowindow。モデルレイヤーでビューの詳細を指定しないでください。

部分的なものを使用して、コントローラで情報ウィンドウを設定する必要があります。

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

詳細はgemのwikiにあります。(jsテンプレートを使用することもできますが、それは問題ではなく、wikiでも説明されています)

于 2012-05-02T17:46:49.847 に答える
1

これが2つの方法です。

コントローラに直接:

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"
于 2014-07-10T10:56:42.790 に答える