À la recherche d'une association avec Geocoder sur les rails, ne peut pas visiter Activerecord :: Relation :: Erreur ActiveRecord_Relation

StackOverflow https://stackoverflow.com//questions/24005691

Question

J'ai une ressource de poste qui appartient à une affiche (type d'utilisateur) dont l'adresse est géocodée à l'aide du gemme géocoder avec succès lors de l'inscription.Maintenant, je souhaite qu'un utilisateur capable de rechercher des messages à proximité de leur distance.Je suis relativement nouveau dans les rails, toute aide serait grandement appréciée.

Je reçois l'erreur suivante (je ne sais pas vraiment ce que cela signifie, je pensais que la création d'associations dans mes modèles était suffisante)

Cannot visit ActiveRecord::Relation::ActiveRecord_Relation_Poster

index.html.erb

<%= form_tag posts_path, method: :get do %> 
Find postings <%= select_tag "within", options_for_select([["Next door", 0.001],["In your  neighborhood", 0.05], ["Nearby", 0.1]], ["Nearby", 0.1]) %>
<%= submit_tag "Find", :name => nil %>
<% end %>

posts_controller.erb

  def index
if params[:within]
  @posts= Post.where(Poster.near(current_user, params[:within].to_f))
else
 @posts=Post.all
 end
end

Modèle de messages

class Post < ActiveRecord::Base
belongs_to :poster
end

modèle d'affiche

class Poster < User
has_many :posts, dependent: :destroy   
end

modèle utilisateur

class User < ActiveRecord::Base
 def full_address
[address_one, city, state, zip].compact.join(', ')
 end 

geocoded_by :full_address, :latitude => :lat, :longitude => :long
after_validation :geocode, if: -> (full_address){ full_address.present? or     address_changed? }
end

Était-ce utile?

La solution

Je viens de faire passer les attributs sur la création du poteau, je souhaite qu'il y ait un moyen de résoudre mon problème d'origine (rend la base de données moins redondante)

dans mon post-contrôleur

def create
 @post = current_user.posts.build(post_params)
 @post.assign_attributes(:lat => current_user.lat, :long => current_user.long)
end

def index
if params[:within]
 @posts= Post.near(current_user, params[:within].to_f)
else
 @posts=Post.all
 end
end

également utilisé "géocodé par: poster" dans mon modèle de messages

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top