Хотелось бы что-нибудь подобное для вас?
module Display
def index
m = self.class.to_s.chomp('Controller').classify.constantize
@model = m.all
@model_names = @model.map(&:name).join(', ')
end
end
В контроллерах:
class CarsController < ApplicationController
include Display
end
class TrucksController < ApplicationController
include Display
end
class VansController < ApplicationController
include Display
end
Редактировать: попытка сделать это без отдельных контроллеров
class DisplaysController < ApplicationController
def index
@model = params[:model].constantize.all
@model_names = @model.map(&:name).join(', ')
end
end
routes.rb
match "display" => "display#index", :as => :display
В виде
link_to "Display Cars", display_path(:model => "Car")
link_to "Display Trucks", display_path(:model => "Truck")
link_to "Display Vans", display_path(:model => "Van")
Примечание. Если вы слышали о extend
для модулей и хотите знать, почему / когда использовать include
против extend
, см. В чем разница между включением и расширением в Ruby? (в основном include для экземпляров, расширение для методов класса).