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 回答