Как я могу упростить этот метод контроллера Rails 3 - PullRequest
4 голосов
/ 08 декабря 2011

В настоящее время у меня есть этот метод в контроллере:

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

Кажется, я могу изменить этот код, чтобы использовать response_with, но я не уверен, как настроить вывод. Нужно ли переопределять методы as_json и to_xml для настройки возвращаемых данных? Если я переопределю эти методы, будут ли правильно обрабатываться ассоциации свойств? Например, у собственности есть много арендаторов и много подрядчиков. Возможно, мне придется вернуть и эти элементы.

Я бы предположил, что метод контроллера может быть упрощен до этого.

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

1 Ответ

1 голос
/ 11 декабря 2011

Метод 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 знает, на что мимы реагировать.

...