Ruby on rails Rails-如何将id设置为令牌(测试前邀请应用程序,如usehipster)

Ruby on rails Rails-如何将id设置为令牌(测试前邀请应用程序,如usehipster),ruby-on-rails,invitation,Ruby On Rails,Invitation,我正在尝试编写一个“病毒性”的测试前邀请应用程序,你可以在fork.ly上看到 基本上,未来的测试人员: 1)输入他的电子邮件 2.)被重定向到视图(即将到来的页面) 3.)接收类似以下链接:http://localhost:3000/?referred_to=测试仪的邀请id将显示在视图中 4.)并接收具有相同链接的电子邮件 如果我理解得很好,“测试员的邀请id”充当令牌,以便跟踪邀请来自哪个测试员 我的问题是: 1.)如何在链接中生成id?我无法在创建之前使用,因为测试人员注册时邀请id尚未

我正在尝试编写一个“病毒性”的测试前邀请应用程序,你可以在fork.ly上看到

基本上,未来的测试人员:

1)输入他的电子邮件

2.)被重定向到视图(即将到来的页面)

3.)接收类似以下链接:http://localhost:3000/?referred_to=测试仪的邀请id将显示在视图中

4.)并接收具有相同链接的电子邮件

如果我理解得很好,“测试员的邀请id”充当令牌,以便跟踪邀请来自哪个测试员

我的问题是:

1.)如何在链接中生成id?我无法在创建之前使用,因为测试人员注册时邀请id尚未设置

我试过这个:

在邀请控制器中 在views/investments/coming_soon.html.erb中
。。。
复制并粘贴以下链接以在任何地方共享

你认为他们喜欢这样吗

2.)为什么链接中有问号?(或者类似于?reffered\u by=为什么不直接使用root\u url//@invitation.id.to\u s)这是与路由相关的内容?这是一种获取方法吗


谢谢你的帮助

我将回答问题2:

??在url中是传递参数的一种方式。使用GET方法的表单使用这种附加到url的方式来传递参数。URL?reffered_by=somevalue通过值somevalue传递所引用的参数。现在,如果在我们的控制器中,我们想要这个值,我们可以调用
params[:referenced\u by]
,我们将得到“somevalue”的值。如果要传递多个参数,可以使用&。比如说,

"#{root_url}?referred_by=#{@invitation.id}&referred_time_stamp=#{Time.now.strftime(%Y%m%d%H%M%S)}"
现在,我们可以在控制器中以params[:refered_by]和params[:refered_time_stamp]的形式访问这些参数

如果routes.rb中未定义路由或资源,则无法使用
“#{root_url}/#{@invitation.id}”
。例如,当您定义

map.connect ':controller/:action/:id'

在routes.rb中,它知道最后一个斜杠后面的部分是参数id的值,我们将在控制器中得到它作为
params[:id]

我将回答问题2:

??在url中是传递参数的一种方式。使用GET方法的表单使用这种附加到url的方式来传递参数。URL?reffered_by=somevalue通过值somevalue传递所引用的参数。现在,如果在我们的控制器中,我们想要这个值,我们可以调用
params[:referenced\u by]
,我们将得到“somevalue”的值。如果要传递多个参数,可以使用&。比如说,

"#{root_url}?referred_by=#{@invitation.id}&referred_time_stamp=#{Time.now.strftime(%Y%m%d%H%M%S)}"
现在,我们可以在控制器中以params[:refered_by]和params[:refered_time_stamp]的形式访问这些参数

如果routes.rb中未定义路由或资源,则无法使用
“#{root_url}/#{@invitation.id}”
。例如,当您定义

map.connect ':controller/:action/:id'
在routes.rb中,它知道最后一个斜杠后面的部分是参数id的值,我们将在控制器中得到它作为
params[:id]