将 'before_action' 的 return 值传递给即将进行的操作
Pass return value of 'before_action' to coming actions
这是我的 MpdController:
class MpdController < ApplicationController
require 'ruby-mpd'
def status
mpd = MPD.new
mpd.connect
# ...
mpd.disconnect
end
def help
mpd = MPD.new
mpd.connect
# ...
mpd.disconnect
end
def pause
mpd = MPD.new
mpd.connect
# ...
mpd.disconnect
end
end
如您所见,每个方法都需要一个新的 MPD 实例并将其保存到我的变量中。
现在,是否可以通过 before_action 和 after_action,由 Rails 提供?
我想到了类似的东西:
before_action :new_mpd
after_action :disconnect_mpd
def new_mpd
mpd = MPD.new
mpd.connect
mpd
end
def disconnect_mpd(mpd)
mpd.disconnect
end
它需要从我的前过滤器中获取 return 值,然后将其进一步传递到我的后过滤器。
这有用吗?
感谢您的帮助。
这是通过分配给控制器实例变量来完成的。
before_action :new_mpd
def status
# use @mpd
end
private
def new_mpd
@mpd = MPD.new
@mpd.connect
end
这是我的 MpdController:
class MpdController < ApplicationController
require 'ruby-mpd'
def status
mpd = MPD.new
mpd.connect
# ...
mpd.disconnect
end
def help
mpd = MPD.new
mpd.connect
# ...
mpd.disconnect
end
def pause
mpd = MPD.new
mpd.connect
# ...
mpd.disconnect
end
end
如您所见,每个方法都需要一个新的 MPD 实例并将其保存到我的变量中。 现在,是否可以通过 before_action 和 after_action,由 Rails 提供?
我想到了类似的东西:
before_action :new_mpd
after_action :disconnect_mpd
def new_mpd
mpd = MPD.new
mpd.connect
mpd
end
def disconnect_mpd(mpd)
mpd.disconnect
end
它需要从我的前过滤器中获取 return 值,然后将其进一步传递到我的后过滤器。
这有用吗? 感谢您的帮助。
这是通过分配给控制器实例变量来完成的。
before_action :new_mpd
def status
# use @mpd
end
private
def new_mpd
@mpd = MPD.new
@mpd.connect
end