大佬教程收集整理的这篇文章主要介绍了ruby-on-rails-3 – 带Rails的内部重定向3,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道什么控制器和动作我要发送内部重定向到,但是我有实际调度问题.这是我现在所在的地方:
TargetController.new.process("show",request.env)
似乎开始处理新的“请求”,但有一些关键的部分丢失,像实际的请求对象.
任何想法或指针都将非常感激.
更新:
我碰到了ActionController中的调度方法,这似乎让我更远一些.
TargetController.new.dispatch("show",request)
我有两个问题,1)它被列为私人api方法,所以如果有另一种方式来做到这一点,我宁愿,和2)即使它是渲染目标控件的显示模板,它是抱怨“MIssing template vanity_urls / show”.
以下是我们提出的解决方案的基础知识.我们做一些其他的事情,如强制编码和检查一些其他应用程序特定的东西,但这应该是你需要的所有去.
这是在你的路线.rb文件的最底部,所以你的虚荣路线不会破坏你的其他命名的路线.
# Vanity routes. match ':id',:as => 'vanity',:to => proc { |env| id = env["action_dispatch.request.path_parameters"][:id] vain_object = <method to find the object you want to display> if vain_object.nil? # render your 404 page 'application#404' else model = vain_object.class.model_name # figure out the controller you want to go to controller = [model.pluralize.camelize,"Controller"].join.constantize # reset the :id parameter with the id of the object to be displayed env["action_dispatch.request.path_parameters"][:id] = vain_object.id # do your internal redirect controller.action("show").call(env) end }
创建虚荣路线时,还要小心,所以不会与其他控制器发生冲突.有些其他有用的事情是:
Rails.application.routes.routes.any? { |r| r.requirements[:controller] == vanity_url }
这告诉你你的vanity_url是否与当前控制器的名称相同.
Rails.application.routes.recognize_path("/#{vanity_url}",:method => :get)
哪个告诉你这是否已经映射到任何东西.
当然,一路上有几个黑客,但它的作用就像一个魅力.
以上是大佬教程为你收集整理的ruby-on-rails-3 – 带Rails的内部重定向3全部内容,希望文章能够帮你解决ruby-on-rails-3 – 带Rails的内部重定向3所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。