0

帮助在查看显示餐厅 ID 的地图上创建与名称餐厅的链接。控制器/maps_controller.rb

def index
    @maps = Map.all
    @json = Map.all.to_gmaps4rails do |map, marker|
       marker.infowindow "<a href=/restaurants/#{@restaurant.object_id}><h2>#{map.name}</h2></a>"
    end

并创建与特定 id 餐厅视图 show
views\restaurants\show.html.erb的关系

<%= @restaurant.title %>

路线.rb

resources :restaurants
resources :maps 

数据库表

create_table "maps", :force => true do |t|
    t.string   "name"
    t.string   "address"
    t.float    "longitude"
    t.float    "latitude"
    t.boolean  "gmaps"
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
  end

create_table "restaurants", :force => true do |t|
    t.string   "title"
    t.text     "description"
    t.string   "image_url"
    t.integer  "map_id"
    t.datetime "created_at",      :null => false
    t.datetime "updated_at",      :null => false

和模型

class Map < ActiveRecord::Base
  attr_accessible :address, :gmaps, :latitude, :longitude, :name
  acts_as_gmappable
  has_one :restaurant

    def gmaps4rails_address
      address
    end
end

class Restaurant < ActiveRecord::Base
  attr_accessible :description, :image_url, :title, :map_id
  belongs_to :map

end
4

1 回答 1

0

迭代时,现在您正在为每个-object获取相同的餐厅( )。改为使用以获得正确的餐厅。@restaurantMapmap.restaurant

另外,我建议使用 Rails 的 url-helpers 来创建 url,而不是手动创建。

最后,将“原始”html 写入控制器内部的对象并不好。建议您将整个 shebang 移动到辅助方法(至少)。

所以是这样的:

Map.all.to_gmaps4rails do |map, marker|
  marker.infowindow info_for_restaurant(map.restaurant)
end

# Somewhere else in your controller
private 
def info_for_restaurant(restaurant)
  view_context.link_to restaurant_path(restaurant) do
    view_context.content_tag("h2") do
      restaurant.name
    end
  end
end
于 2013-03-29T13:11:10.610 回答