寻找一种干净的方式来呈现请求引用者的动作和控制器,以防另一个控制器控制的资源的验证失败。这是因为可以从多个不同的视图创建资源。
到目前为止,我已经这样做了:
if @resource.save
redirect_to resource_path(@resource)
else
request_referer_controller = Rails.application.routes.recognize_path(request.referrer)[:controller]
request_referer_action = Rails.application.routes.recognize_path(request.referrer)[:action]
search_param = Rails.application.routes.recognize_path(request.referrer)[:search_param]
render "#{request_referer_controller}/#{request_referer_action}", search_param: search_param if request_referer_controller.include? "search"
render "#{request_referer_controller}/#{request_referer_action}" if request_referer_controller.include? "profile"
end
但对我来说,这在某种程度上是丑陋的。Rails 中必须有一些东西来确定和呈现先前的请求控制器、操作和任何参数,对吗?
我已经习惯了 Rails 内置了所有东西。