Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-使用参数呈现请求引用者_Ruby On Rails_Ruby_Controller_Request_Render - Fatal编程技术网

Ruby on rails Rails-使用参数呈现请求引用者

Ruby on rails Rails-使用参数呈现请求引用者,ruby-on-rails,ruby,controller,request,render,Ruby On Rails,Ruby,Controller,Request,Render,寻找一种干净的方式来呈现请求引用者的操作和控制器,以防由另一个控制器控制的资源验证失败。这是因为可以从多个不同的视图创建资源 到目前为止,我已经完成了以下工作: if @resource.save redirect_to resource_path(@resource) else request_referer_controller = Rails.application.routes.recognize_path

寻找一种干净的方式来呈现请求引用者的操作和控制器,以防由另一个控制器控制的资源验证失败。这是因为可以从多个不同的视图创建资源

到目前为止,我已经完成了以下工作:

        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的内置功能。

您可以重新定向<代码>重定向到:back下面是一个很好的例子:。希望这有帮助。。!!问题是我丢失了@resource错误。我认为我处理这一切都是错误的…可能是,你可以简单地直接渲染动作,你应该做的是创建部分形式,并在不同的视图中使用该部分。在控制器中,create action将呈现相应的动作。这里有一些想法:,也是为了更好地理解createscaffold,并查看在controller中生成的代码。希望这有帮助!!是的。最干净的方法是直接呈现动作。