J'utilise Thinking Sphinx pour exécuter des recherches et j'obtiens les modèles ActiveRecord appropriés. Le problème est, je veux créer un chemin de lien approprié et le texte sur chaque modèle, puis envoyer les informations au navigateur sous la forme de JSON, via AJAX. J'utilise ce qui suit pour construire les liens attributs:Impossible d'accéder aux variables définies par attr_accessor
Dans le contrôleur:
class FindController < ApplicationController
def tag_results
@results = ThinkingSphinx.search(params[:terms])
@results.each do |result|
result.build_ajax_response
end
respond_to do |format|
format.html
format.json { render :json => @results }
end
end
end
Dans le modèle:
class TaggedItem < ActiveRecord::Base
attr_accessible :name
attr_accessor :search_link, :search_text
def build_ajax_response
self.search_link = Rails.application.routes.url_helpers.tagged_item_path(self.id)
self.search_text = self.name
end
end
L'objet JSON résultant n'a pas de l'une des search_ * attributs répertoriés, beaucoup moins ont une valeur pour eux. J'ai essayé d'utiliser @search_link ainsi que search_link dans la méthode
build_ajax_response
.
Est-ce que je fais cela mal? Pourrait-il y avoir quelque chose d'autre qui interfère?
Avez-vous essayé d'utiliser 'build_ajax_response' sur la console? Est-ce que quelque chose est soulevé, quelque chose est-il réglé – Draiken
Lorsque j'exécute
build_ajax_response
, il ne génère aucune erreur, mais, de manière ruby, il renvoie la dernière expression évaluée. (Dans ce cas, self.name) – Tricnic