我有以下资源
val
Places (:place_id, :name, :shortlink, :token)
我有一个使用嵌套用户资源的受限用户注册(用户有很多事件)。
当用户注册时,他使用引用的位置列创建新事件。
用户只有在网址
中包含这些参数时才能注册https://mysite/user/signup?q=[:place_id]&t=[:token] #place id必须存在,place token必须等于t参数
Events (:event_id, :address)
我想为每个地方生成一个快捷方式供用户注册
https://mysite/[:shortlink] #place.shortlink
这将重定向到具有相应填写表单和限制参数的给定注册表单,以便具有直接网址的用户可以注册。
https://mysite/user/signup?q=[:place_id]&t=[:token]
如何生成路线?
附属问题,我做得对吗?
答案 0 :(得分:1)
在此帖here找到解决方案。
我需要重新启动服务器,以便在创建Place对象后加载新创建的路径。不确定我是否正确行事,但它确实有效..
#config/route.rb
Rails.application.routes.draw do
Place.all.each do |pl|
get "/#{pl.shortlink}" => redirect("/users/sign_up?q=#{pl.id}&t=#{pl.token}")
end
end
为了在添加地点时load新创建的路线,我添加了
#models/place.rb
after_create :add_shortlink
...
def add_shortlink
Rails.application.reload_routes!
end
这不适用于Heroku,问题是here