2012-07-11 30 views
5

Tôi đang sử dụng Thinking Sphinx để chạy tìm kiếm và tôi nhận được Mô hình ActiveRecord phù hợp tốt. Vấn đề là, tôi muốn tạo một đường dẫn liên kết thích hợp và văn bản trên mỗi mô hình, sau đó gửi thông tin đến trình duyệt dưới dạng JSON, thông qua AJAX. Tôi đang sử dụng những điều sau đây để xây dựng những liên kết thuộc tính:Không thể truy cập attr_accessor biến được xác định

Trong bộ điều khiển:

 
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 
Trong mô hình:
 
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

Kết quả là đối tượng json không có một trong các search_ * thuộc tính được liệt kê, ít nhiều có giá trị cho họ. Tôi đã thử sử dụng @search_link cũng như chỉ search_link trong phương thức build_ajax_response.

Tôi có làm điều này sai không? Có thể có cái gì khác can thiệp?

+0

Bạn đã thử sử dụng 'build_ajax_response' trên bảng điều khiển chưa? Có cái gì đó được nêu ra, là một cái gì đó thiết lập? – Draiken

+0

Khi tôi chạy build_ajax_response, nó không gây ra bất kỳ lỗi nào, nhưng, theo kiểu ruby ​​điển hình, nó trả về biểu thức được đánh giá cuối cùng. (Trong trường hợp này, self.name) – Tricnic

Trả lời

8

Mặc định của đường ray to_json không biết về những thuộc tính bản ghi không hoạt động bổ sung mà bạn đã thêm. Điều dễ nhất có thể có thể là chỉ định chúng làm phương pháp bổ sung để bao gồm:

format.json { render :json => @results.to_json(:methods => [:search_link, :search_text]) } 
+0

Điều này thực sự làm việc như tôi đã muốn! Cảm ơn, Frederick. – Tricnic

+0

Điều này cũng phù hợp với tôi. Chỉ cần làm rõ, nó trả về kết quả của các phương thức được chỉ định này trong JSON ngoài các thuộc tính thông thường. –

Các vấn đề liên quan