Хорошо, я придумала следующее решение для всех, кто интересуется.
Я подумал, что могу добавить контроллер, который будет наследовать от InheritedResources, который наследует от ApplicationController, а затем все остальные мои контроллеры наследуют от него (за исключением пары особых случаев, которые будут наследоваться непосредственно от контроллера приложения (например, HomeController). , который не имеет никаких действий, кроме index, и не привязан к какой-либо конкретной модели) - таким образом я могу определять определенные значения по умолчанию - которые я продолжаю использовать во всех моих контроллерах, таких как response_to, и все еще пользоваться преимуществами гема InheritedResources .
class DefaultInheritedResourcesController < InheritedResources::Base
# For CanCan authorization - pretty much makes it application wide, without the need
# to define it in each controller. Can still override it in ability.rb by making
# a resource readable to all users with a session.
# if user
# can :read, [Product]
# end
# Also for controllers that need special treatment, you can just inherit from ApplicationController
# and override with skip_authorization_check - but for my app it's rare (only HomeController),
# most of controllers deal with some kind of resource - so this is a useful convention for 99% of use cases.
load_and_authorize_resource
respond_to :html, :json, :xml, :pdf
# format pdf needs to be redefined on those actions where index! or show! are called.
def index
super do |format|
format.pdf do
render :pdf => pdf_file_name,
:show_as_html => params[:debug].present?
end
end
end
def show
super do |format|
format.pdf do
render :pdf => pdf_file_name,
:show_as_html => params[:debug].present?
end
end
end
end
Тогда в моем ProductController я могу это сделать (обратите внимание, откуда мой ProductController наследуется.
class ProductsController < DefaultInheritedResourcesController
def index
@products = Product.page(params[:page])
super
end
end
Надеюсь, это кому-нибудь поможет.