rails 5基于模型属性的动态路由重定向

时间:2018-05-22 12:20:49

标签: ruby-on-rails routes

我有以下资源

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]

如何生成路线?

附属问题,我做得对吗?

1 个答案:

答案 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