我正在尝试在Rails 3中实现一个通用的虚荣URL系统.通用的意思是虚荣网址与特定模型无关.它类似于Vanities gem,我VanityUrlController从所有的虚荣网址中击中了它.不同的是,我不想做,从外部重定向foo.com/username到foo.com/users/1或foo.com/product-name到foo.com/products/1.我想要虚荣网址,并让VanityUrlContoller做一个模仿相应show动作的内部重定向.
我知道我想要将内部重定向分配给哪个控制器和操作,但是实际调度它时遇到问题.这就是我现在所处的位置:
TargetController.new.process("show", request.env)
Run Code Online (Sandbox Code Playgroud)
它似乎开始处理新的"请求",但缺少关键部分......就像实际的请求对象一样.
任何想法或指示将非常感激.
更新:
我在ActionController中遇到了调度方法,这似乎让我更进一步.
TargetController.new.dispatch("show", request)
Run Code Online (Sandbox Code Playgroud)
我有两个问题,1)它被列为私有api方法,所以如果有另一种方法来做到这一点,我宁愿那样,2)即使它正在渲染TargetController的show模板,它是抱怨"缺少模板vanity_urls/show."
UPDATE
以下是我们提出的解决方案的基础知识.我们做了一些其他的事情,比如强制编码和检查其他一些特定于应用程序的东西,但这应该是你需要的所有东西.
这位于routes.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 …Run Code Online (Sandbox Code Playgroud) 虚荣网址和吊索之间的主要区别是什么:别名?
按照文档:这里
sling:alias - 可以在任何资源上设置属性以指示资源的别名.例如,资源/内容/访问者可以将sling:alias属性设置为besucher,从而允许在URL中将资源作为/ content/besucher进行寻址.
虚荣URL - 您可以在CQ中定义虚荣URL,以在您的网站上创建易于记忆且易于搜索的URL.
但我还是不确定究竟是什么区别,我们什么时候使用它们.请帮我解决这个问题.
我有一个应用程序在服务器服务前端和服务API之间大致分开.我们想添加一个通配符来捕获子域上的用户名,并将它们指向前端服务器.所以我的网址映射如下:
服务于前端文件的服务器由https://example.com和映射https://www.example.com
API的服务器映射为 https://api.example.com
我们在像https://forum.example.com和的域名上也有论坛,演示等https://demo.example.com
现在,使用DNSimple中的ALIAS记录非常简单.
捕获https://username.example.com并将其映射到前端服务器的最佳方法是什么?我们需要的是一个通配符如*.example.com,但我们不想直接api,forum,demo,等到该服务器.
有没有办法在DNS级别设置层次结构或优先级,以便它首先检查命名匹配,然后如果没有找到任何内容则转到通配符?
我想为构建在Playframework上的 Web应用程序创建虚荣URL.
我试图index在主页面中为方法添加一个参数,Application如果我打电话,这将有效,http://localhost:9000/?vanity_url而不是http://localhost:9000/vanity_url.
我怎么做到这一点?我希望用户创建自己的网址,解决方案必须是动态的,就像开始一样Facebook
最近有消息称,可以为Apple Appstore创建虚荣网址.

但是我无法在itunes connect中添加任何额外添加的选项.
任何帮助表示赞赏:)