位置模型为多态关联

时间:2016-04-08 10:36:03

标签: ruby-on-rails nested-attributes polymorphic-associations rails-geocoder

我希望我正确地形成这个问题。但我正在尝试创建一个具有地理编码地址的位置模型,并且该地址可以使用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

我的代码可能是代码片段,但我的整体问题发生在控制器内我已经做好了一切。我的帖子表单中的位置字段是模型位置的嵌套形式,地址字段是地理编码的,并且具有搜索地址输入的位置。提交帖子时我的问题出现了,我尝试了几种方法,但我无法获得保存到帖子模型的位置。任何帮助都会非常有用。

0 个答案:

没有答案