我有一个 Player
资源,其中包含各种嵌套资源,例如:Measurable
和 Workout
。
我有一个变量用于 Player 页面上的 header ,无论我是从 Player_Controller 还是从其他嵌套资源 Controller 之一访问操作,我都需要设置一个变量。我怎样才能干涸我的代码以在某处添加该变量,这样我就不必在每个 Controller 中包含相同的代码......如下所示:
播放器 Controller
class PlayersController < ApplicationController
before_action :set_measurable_summary
#...
private
def set_measurable_summary
@measurable_summary = @player.measurable_summary
end
end
锻炼 Controller
class Players::WorkoutsController < ApplicationController
before_action :set_measurable_summary
#...
private
def set_measurable_summary
@measurable_summary = @player.measurable_summary
end
end
最佳答案
这可以通过 concern 轻松完成。 :
# app/controllers/concerns/measurable_summary.rb
module MeasurableSummary
extend ActiveSupport::Concern
included do
before_action :set_measurable_summary
end
private
def set_measurable_summary
@measurable_summary = @player.measurable_summary
end
end
然后将其包含到您的 Controller 中:
class PlayersController < ApplicationController
include MeasurableSummary
...
end
class Players::WorkoutsController < ApplicationController
include MeasurableSummary
...
end
关于ruby-on-rails - 在 Rails 中,如何将私有(private)方法共享给嵌套 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33710836/