Rails - 如何设置id作为令牌(pre-beta邀请应用程序,如usehipster)

我正在尝试编写一个“病毒式”pre-beta邀请应用程序,可以在usehipster.com或fork.ly上看到。 基本上,未来的测试人员: 1.)输入他的电子邮件 2.)被重定向到视图(coming_soon页面) 3.)收到如下链接:“http:// localhost:3000 /?referenced_to =测试者的邀请ID”显示在视图中。 4.)并收到一封带有相同链接的电子邮件。 如果我理解得很好,“测试者的邀请ID”就作为一个标记,以便跟踪邀请来自哪些测试人员。 我的问题: 1.)如何在链接中生成id?我无法使用before_create导致在测试人员注册时尚未设置邀请ID。 我试过这个: 在邀请控制器中
def coming_soon
  @invitation = Invitation.last
end
在views / invitations / coming_soon.html.erb中
...
Copy and paste the following link to share wherever you want!</p>

<%= text_field_tag 'code', root_url + "?reffered_by=" + @invitation.id.to_s %>
你认为他们喜欢这样吗? 2.)为什么链接中有问号? (或类似的东西?reffered_by =为什么不只是root_url/@invitation.id.to_s)这是与路线有关的东西?这是一种获取方法吗? 谢谢你的帮助!     
已邀请:
我将回答问题2: ?在url中是一种传递参数的方法。使用GET方法的表单使用这种附加到url来传递参数。 URL?reffered_by = somevalue传递参数referenced_by,其值为somevalue。现在如果在我们的控制器中,我们想要这个值,我们可以调用
params[:referred_by]
,我们将得到的值为“somevalue”。如果我们想传递多个参数,我们可以使用&amp;传递它。例如,
"#{root_url}?referred_by=#{@invitation.id}&referred_time_stamp=#{Time.now.strftime(%Y%m%d%H%M%S)}"
现在,我们可以在控制器中访问这些参数作为params [:referenced_by]和params [:referenced_time_stamp]。 如果您没有在routes.rb中定义路由或资源,则无法传递id using等参数
"#{root_url}/#{@invitation.id}"
。例如,当您定义时
map.connect ':controller/:action/:id'
在routes.rb中,它理解了在最后一个斜杠之后出现的部分是参数id的值,我们将在控制器中将其作为
params[:id]
。     

要回复问题请先登录注册