Rails每隔一段时间呈现两个不同页面中的一个

时间:2016-07-28 02:56:19

标签: ruby-on-rails ruby redirect

在Rails控制器中,我可以 redirect_to 在每个其他页面加载中的两个单独页面中的一个吗?

可以做这类事情的东西:

class HomePageController < ApplicationController
   def index
      50% of the page-loads do
         redirect_to '/foo'
      else
         redirect_to '/bar'
      end
   end
end

这种类型的东西可以在Rails控制器中使用吗?谢谢!

2 个答案:

答案 0 :(得分:0)

是的,您可以在Rails控制器中有条件地重定向,因此以下是&#34;真正的&#34;您的伪代码示例:

def index
  if rand(2) == 1
    redirect_to '/foo'
  else
    redirect_to '/bar'
  end
end

但是,如果您正在寻求进行多变量测试,那么这不是一个完整的解决方案。即使同一个用户两次访问该页面,该页面也可能会发生变化,这可能非常迷惑。您可能希望查看像split这样的宝石,或者至少存储用户在会话中看到的页面(或cookie)。

答案 1 :(得分:0)

我相信你需要在数据库或会话中坚持这种事情,因为控制器完全不了解这类事情。

但您是否希望每个其他请求或每个其他请求都向特定用户提供新页面?如果user A次访问,user B次访问,他们是否应该page 1user b page 2看到def index # A currently non-existent model that tracks visits if Visitor.count.even? render 'page_1' else render 'page_2' end Visitor.create(<whatever information you want to store>) end ?这将告诉您是否需要使用会话或数据库。

无论如何,这里有一些你应该做的伪代码(假设每个其他请求都会翻转,无论用户是谁)

onChange