我目前在控制器中使用此方法:
def show
property = Property.find(params[:id])
respond_to do |format|
format.xml { render :xml => property.to_xml(:except => [:address1, :address2, :analysis_date, :analysis_date_2, ...]) }
format.json { render :json => property.to_json(:except => [:address1, :address2, :analysis_date, :analysis_date_2, ...]) }
end
end
似乎我可以重构此代码以使用respond_with,但我不确定如何自定义输出。我是否需要覆盖as_json和to_xml方法才能自定义返回的数据?如果我覆盖这些方法,属性关联仍然会被正确处理吗?例如,一个房产有很多租户和许多承包商。我可能还需要返回这些元素。
我认为控制器方法可以简化为此。
def show
property = Property.find(params[:id])
respond_with(property)
end
答案 0 :(得分:1)
respond_with
方法有两个参数:resources*
和&block
所以你应该可以这样做:
def show
property = Property.find(params[:id])
respond_with(property, :except => [:address1,
:address2,
:analysis_date,
:analysis_date_2,
...])
end
请记住,为了正确使用respond_with
,您需要在控制器的顶部添加respond_to :html, :json, :xml
。因此respond_with
知道要响应的模仿者。