我有一個模型具有一個虛擬屬性,我希望在模型呈現爲JSON時包含這個屬性。我已經做到了這一點:to_json選項[:方法]不適用於Model.all
def to_json(options={})
options[:methods] ||= [];
options[:methods] << :date_string;
super(options);
end
這增加了我的date_string
方法的屬性列表生產JSON時呈現。
在我的控制器,顯示動作產生正確的結果,使date_string
彷彿這只是一個正常的屬性:
def show
@project = Project.find params[:id]
respond_to do |format|
format.html
format.json { render :json => @project }
end
end
但指數動作不包括date_string
:
def index
@projects = Project.all
respond_to do |format|
format.html
format.json { render :json => @projects }
end
end
有沒有人知道是否有可能得到這個工作?我猜測它在呈現集合時並未使用特定於模型的to_json
。
編輯:看起來也許我應該使用as_json
現在 - 我會看看是否能解決這個問題。我不認爲as_json
這裏有什麼區別。
謝謝,這是做到了。我曾嘗試過'as_json',但沒有'options || = {}'行 - 爲我排序。乾杯:) – Skilldrick