2016-07-26 7 views
2

私は緯度/経度情報と共にベンダーの詳細を保存できるアプリケーションを開発中です。それをジオコーダブルにするために、私はジオコーダ宝石をポスティスで使用しています。私は、ジオコーダの完全なドキュメントに従ってきました。しかし、新しいベンダーを作成している間、私は"未定義のメソッド` address = 'for "エラージオコーダーの宝石をレールに使用

NoMethodError in VendorsController#create 

undefined method `address=' for #<Vendor:0x007faca1729a20> Did you 
mean?addressline2= 

マイレールvendors_controller.rb

class VendorsController < ApplicationController 
    before_action :set_vendor, only: [:show, :edit, :update, :destroy] 


    def index 
    @vendors = Vendor.all.limit(20) 
    end 

    def new 
    @vendor = Vendor.new 
    end 

    def create 
    @vendor = Vendor.new(vendor_params) 
    respond_to do |format| 
     if @vendor.save 
     format.html { redirect_to @vendor, notice: 'Vendor was 
     successfully created.' } 
     format.json { render :show, status: :created, location: @vendor } 
    else 
    format.html { render :new } 
    format.json { render json: @vendor.errors, status: 
    :unprocessable_entity } 
    end 
    end 
    end 

    def update 
    respond_to do |format| 
     if @vendor.update(vendor_params) 
     format.html { redirect_to @vendor, notice: 'Vendor was 
     successfully 
    updated.' } 
    format.json { render :show, status: :ok, location: @vendor } 
    else 
    format.html { render :edit } 
    format.json { render json: @vendor.errors, status: 
    :unprocessable_entity } 
    end 
    end 
    end 


private 
def set_vendor 
    @vendor = Vendor.find(params[:id]) 
end 


def vendor_params 
    params.require(:vendor).permit(:name, :email, :phone_no, :addressline1, 
    :addressline2, :landmark, 
    :city, :state, :country, :pincode, :latitude, :longitude, :status) 
end 
end 

マイvendor.rb

class Vendor < ActiveRecord::Base 
    has_many :vendor_products 
    has_many :products, through: :vendor_products 


    geocoded_by :full_path 
    after_validation :geocode 

    reverse_geocoded_by :latitude, :longitude 
    after_validation :reverse_geocode 

    def full_path 
    [addressline1, addressline2, landmark, city, state, country, 
    pincode].compact.join(', ') 
    end 
end 

マイベンダースキーマ

create_table "vendors", force: :cascade do |t| 
t.string "name" 
t.string "email" 
t.string "phone_no" 
t.string "addressline1" 
t.string "addressline2" 
t.string "landmark" 
t.string "city" 
t.string "state" 
t.string "country" 
t.float "latitude" 
t.float "longitude" 
t.boolean "status" 
t.datetime "created_at", null: false 
t.datetime "updated_at", null: false 
t.string "pincode" 
end 
次のエラーを取得します

私はaddrを持っていませんコード内のどこでも使用されています。それでも、コンソールとフォームの両方から新しいベンダーを作成しようとすると、このエラーが表示されます。私はサーバーを再起動しようとしましたが、無駄な試みでした。私はレール初心者であり、丁寧な説明があれば本当に助かります。詳細情報が必要な場合はお知らせください

+0

address列を追加するには、マイグレーションを実行しますあなたは「アドレス」にご「full_path」メソッドの名前を変更しようとするかもしれません – Joeyjoejoe

答えて

1

特に指定しない限り、ジオコーダーは逆ジオコーディングの結果を配置するために:address列が必要です。あなたはそうのようなデフォルト値を変更することができます。

reverse_geocoded_by :latitude, :longitude, :address => :location 
after_validation :reverse_geocode 

私はあなたのvendorsテーブル

関連する問題