Я рассмотрел API для своей конкретной ошибки, и предоставленные ответы не могут решить мою проблему.
Я просто экспериментирую с кодом "найти ближайшее местоположение", полученным в Интернете, и мойПроблема в том, что когда я внедряю этот код в проект, я получаю «неопределенный метод` each »для ошибки nil: NilClass».
Я понимаю, что эта ошибка будет вызвана тем, что при вызове @something она не определена.Итак, это код и файлы, с которыми я работаю:
location.rb
class Nearby_Location < ActiveRecord::Base
geocoded_by :full_address
after_validation :geocode, :if => :address_changed?
def full_address
[address, city, postcode].compact.join(',')
end
end
location_controller.rb
class Locations < ApplicationController
def index
@locations = Locations.all
if params[:search].present?
@locations = Locations.near(params[:search], 10, :order => :distance)
else
@locations = Locations.all.order("created_at DESC")
end
end
def new
@locations = Locations.new
end
def create
@locations = Locations.new(location_params)
if @locations.save
flash[:success] = 'Place added!'
redirect_to root_path
else
render 'new'
end
end
def location_params
params.require(:location).permit(:company_name, :address, :city,
:postcode, :latitude, :longitude)
end
def show
render :layout => nil
@locations = Locations.find(params[:id])
end
end
page.html.erb
<div class="container">
<div class="starter-template">
<h3>Find places near your location</h3>
<p class="lead">Enter your address or zip code</p>
<p><%= form_tag locations_path, :method => :get do %>
<%= text_field_tag :search, params[:search], placeholder: "e.g Statue of Liberty, New York" %>
<%= submit_tag "Search Near", :name => nil %>
<% end %>
</p>
</div>
<% @locations.each do |locations| %>
<%= link_to locations do %>
<%= locations.name %>
<% end %>
<% end %>
</div>
</div>
схема.rb
create_table "locations", force: :cascade do |t|
t.string "address"
t.float "latitude"
t.float "longitude"
end
Я изменил код, включающий ответы других API, но безуспешно.Я чувствую, что это может быть из-за части кода def show, но я не слишком уверен.