6

Thinking Sphinxを使用して検索を実行していますが、適切なActiveRecordモデルを正常に取得しています。問題は、各モデルに適切なリンクパスとテキストを作成し、AJAXを介してJSONの形式でブラウザに情報を送信したいということです。私はこれらのリンク属性を構築するために以下を使用しています:

コントローラ内:

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
モデルの場合: 結果のjsonオブジェクトには、リストされているsearch_ *属性のいずれも含まれていません。ましてや、それらの属性の値はありません。メソッドでsearch_linkだけでなく、@search_linkを使用してみました。
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

build_ajax_response

私はこれを間違っていますか?他に何か干渉がありますか?

4

1 に答える 1

10

Railsのデフォルトto_jsonは、追加した非アクティブなレコード属性を認識していません。最も簡単な方法は、おそらくそれらを追加のメソッドとして指定することです。

format.json { render :json => @results.to_json(:methods => [:search_link, :search_text]) }
于 2012-07-11T15:37:12.437 に答える