agu*_*ren 5 cookies ruby-on-rails referrals
我正在为我的Ruby on Rails应用程序构建一个推荐程序,这样用户就可以共享包含其用户ID(app.com/?r=ID)的链接.如果访问者登陆应用程序主页时存在引荐来源ID,则主页上的注册表单包含一个隐藏字段,该字段填充了引荐者的ID.然后,如果被推荐的访客注册,则控制器检测ID并在推荐表中创建新的推荐.它的工作原理,以及这段代码:
@referrer = User.find(params[:r]) rescue nil
unless @referrer.nil?
@referral = Referral.new(:referrer_id=>@referrer.id)
end
Run Code Online (Sandbox Code Playgroud)
非常简单的东西,但它很容易打破(例如:如果访问者离开主页,引用者ID丢失).我觉得cookie可能是一种更健壮的方法,其中包含引用者ID的cookie存储在被推荐用户的计算机上x天.这是非常普遍的,特别是对于像Groupon这样的联盟计划,但我从未使用过cookie,也不知道从哪里开始.
此外,有没有什么好的方法来掩盖或更改推荐系统的URL?代替具有app.com/?r=1842,我宁愿像app.com/x39f3 < -与给定用户相关联的数字的随机生成的序列,而不R =?部.
任何帮助是极大的赞赏.谢谢!
Rob*_*her 11
要回答cookie问题,可以很容易地设置它们:
cookies['app-referrer-id'] = params[:r]
Run Code Online (Sandbox Code Playgroud)
然后读取它们的格式相同(但没有分配).我建议将此代码放在应用程序控制器的before_filter中.这样,无论您的访问者首次登陆您网站的页面如何,都会设置Cookie.
关于将URL的结构更改为建议的格式,您需要使引用代码与特定模式匹配,否则您可能会遇到路由问题.例如,如果它们匹配3个字母后跟三个数字的格式,您可以将以下路线文件放入:
match '/:referrer_id' => 'app#index', :constraints => {:referrer_id => /[a-zA-Z]{3}[0-9]{3}/}
Run Code Online (Sandbox Code Playgroud)
对app#index的引用应该更改为处理引用的控制器,您可以通过params [:referrer_id]访问referrer_id.
希望这有一些用处.
知更鸟
| 归档时间: |
|
| 查看次数: |
2787 次 |
| 最近记录: |