我希望我正确地形成这个问题。但我正在尝试创建一个具有地理编码地址的位置模型,并且该地址可以使用gmap
定位到地图上。
我的问题是将我的位置模型与其他应用程序模型相关联。目前,我正在尝试在帖子表单中添加一个位置字段。
我的应用程序如下,使用地理编码器和gmaps作为rails gems。
class Location < ActiveRecord::Base
belongs_to :locatable, polymorphic: true
belongs_to :post
geocoded_by :address
acts_as_gmappable
after_validation :geocode
validates :address, presence: true
validates :latitude, presence: true
validates :longitude, presence: true
def gmaps4rails_address
"#{address}"
end
validates :locatable, presence: true
end
发布模型
class Post < ActiveRecord::Base
has_one :location, as: :locatable , :dependent => :destroy
accepts_nested_attributes_for :locations,:reject_if =>:all_blank ,allow_destroy: true
end
控制器
后置控制器
def new
@post= current_user.posts.build
end
def create
@post = current_user.posts.new(post_params)
@post = Location.new
if @post.save
redirect_to root_path
else
render 'new'
flash[:error] = !"
end
end
def post_params
params.require(:post).permit(locations_attributes[:address,:latitude,:longitude, :locatable_id, :locatable_type, :gmaps])
end
位置控制器
class LocationsController < ApplicationController
def new
@location = Location.new
end
def create
@location = Location.new(params[:location])
end
def destroy
@location.destroy
respond_to do |format|
format.html { redirect_to locations_url, notice: 'Location was successfully destroyed.' }
format.json { head :no_content }
end
end
private
def location_params
params.require(:location).permit(:address, :latitude, :longitude, :locatable_id, :locatable_type, :gmaps)
end
end
我的代码可能是代码片段,但我的整体问题发生在控制器内我已经做好了一切。我的帖子表单中的位置字段是模型位置的嵌套形式,地址字段是地理编码的,并且具有搜索地址输入的位置。提交帖子时我的问题出现了,我尝试了几种方法,但我无法获得保存到帖子模型的位置。任何帮助都会非常有用。