使用Split进行Rails A / B测试,多个视图共享相同的实验(帮助方法?)

时间:2014-06-16 19:58:05

标签: ruby-on-rails split ab-testing

我有许多不同的观点需要分享相同的实验(即页脚和标题部分需要显示'nav_a'或'nav_b'选项)。

我曾希望简单地使用相同的命名实验会使这项工作有效但似乎没有(即有时标题有'a'而页脚有'b',反之亦然或两者都相同)。< / p>

我怎样才能做到最好?

作为第二个问题,我的“实验”的一部分是知道哪个视图在让用户点击视频链接方面更成功;在我的应用程序中,我将这些点击保存为“访问”模型;无论如何,visit_controller可以知道哪个测试 - a或b - 正在运行,所以我可以将它保存到我的访问模型中?这样我可以计算哪个访问模型具有'实验1选项'与'实验2选项b'等。

我会对一个简单的全局变量感到高兴,知道要保存哪个;不确定如何以这种方式启动分裂中的ab_test。

更新:

这是当前页面的示例代码:

/layout/header.html.erb,其中包含以下行:

<%= ab_test('test_test', 'This is Header Test A', 'This is Header Test B') %>

和/layout/footer.html erb有

<%= ab_test('test_test', 'This is Footer Test A', 'This is Footer Test B') %>

但他们并没有始终如一地选择相同的选项。还不确定如何最好地实现'helper_method',如文档中所述:https://github.com/andrew/split#views

更新#2

我只是尝试将layouts / header.html.erb和layouts / footer.html.erb中的代码更改为:

<%= render partial: ab_test("test_test", "layouts/test_a", "layouts/test_b") %>

当我离开这两个其他布局时,拉入SAME部分(即_test_a.html.erb),它们都同步并显示出预期的内容。

然而,当我更改layouts / footer.html.erb以呈现此部分时:

<%= render partial: ab_test("test_test", "layouts/test_footer_a", "layouts/test_footer_b") %>

它们不再是同步并且会随机显示不同的部分 - 即第一个A +页脚B,然后是页眉b和页脚b,标题a +页脚b等等 - 所有这些都在同一个会话中。

2 个答案:

答案 0 :(得分:0)

我想我已经找到了如何最好地处理这个问题。

在ApplicationController中创建一个帮助器方法,即(简单地测试它):

helper_method :home_display_test

def home_display_test
    @home_display =  ab_test("home_display_test", 'original', 'new')
    return @home_display
end

然后在我的观点中,我可以加载不同的部分,例如:

认为这是非常扎实的工作;我甚至可以在另一个控制器中请求哪个测试版本来保存点击中的数据...

答案 1 :(得分:0)

一个AB测试应该有一组备选方案,这些方案在配置文件中或第一次调用ab_test()

时定义

尝试这样做:

<head>
  <%- if ab_test('layout_test', 'original', 'new') == 'origional' %>
    <title>Old Title</title>
  <%- else %>
    <title>New Title</title>
  <%- end %>
</head>
<body>
  <%- if ab_test('layout_test', 'original', 'new') == 'origional' %>
    <%= render partial: 'layout/original'%>
  <%- else %>
    <%= render partial: 'layout/new'%>
  <%- end %>
</body>

应该像魅力一样!