Ruby on rails 如何简化Rails 3控制器方法

Ruby on rails 如何简化Rails 3控制器方法,ruby-on-rails,ruby-on-rails-3,respond-with,Ruby On Rails,Ruby On Rails 3,Respond With,我目前在控制器中使用此方法: 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

我目前在控制器中使用此方法:

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_,但我不确定如何自定义输出。我是否需要重写as_json和to_xml方法来定制返回的数据?如果重写这些方法,属性关联是否仍能正确处理?例如,一处房产有许多租户和承包商。我可能还需要返回这些元素

我假设控制器方法可以简化为这样

def show
  property = Property.find(params[:id])
  respond_with(property)
end

respond\u with
方法有两个参数:
resources*
&block
,因此您应该能够做到这一点:

def show
  property = Property.find(params[:id])
  respond_with(property, :except => [:address1, 
                                     :address2, 
                                     :analysis_date, 
                                     :analysis_date_2, 
                                     ...])
end
请记住,为了让我们正确地使用
响应
,您需要在控制器顶部添加
响应到:html、:json、:xml
。这样,
respond\u就知道要响应什么样的模拟