首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用拆分的Rails A/B测试,多个视图共享相同的实验(帮助方法?)

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

Stack Overflow用户
提问于 2014-06-17 03:58:05
回答 2查看 1.2K关注 0票数 0

我有许多不同的视图需要共享相同的实验(即页脚和页眉部分需要同时显示'nav_a‘或'nav_b’选项)。

我曾希望简单地使用相同的命名实验就能让它工作,但似乎没有(例如,有时页眉有'a‘,页脚有'b',反之亦然,或者在两个地方都有相同的a)。

我怎样才能最好地做到这一点呢?

作为第二个问题,我的“实验”的一部分是知道在让用户点击视频链接时哪个视图更成功;在我的应用程序中,我将这种点击保存为“访问”模型;visit_controller是否可以知道正在运行的测试-a或b-以便我可以将其保存到我的访问模型中?这样,我就可以得到访问模型中“实验1选项a”与“实验2选项b”的数量,等等。

我很乐意使用像全局变量这样简单的东西来知道要保存哪些;但不确定如何以这种方式在split中启动ab_test。

更新:

以下是当前页面的示例代码:

/layout/header.html.erb,如下所示:

代码语言:javascript
运行
复制
<%= ab_test('test_test', 'This is Header Test A', 'This is Header Test B') %>

和/layout/footer.html erb有

代码语言:javascript
运行
复制
<%= ab_test('test_test', 'This is Footer Test A', 'This is Footer Test B') %>

但他们并没有始终如一地做出同样的选择。我也不确定如何最好地实现文档中描述的'helper_method‘:https://github.com/andrew/split#views

更新#2

我刚刚尝试将layout/header.html.erb和layout/footer.html.erb中的代码更改为:

代码语言:javascript
运行
复制
<%= render partial: ab_test("test_test", "layouts/test_a", "layouts/test_b") %>

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

但是,当我更改layout/footer.html.erb以呈现部分内容时:

代码语言:javascript
运行
复制
<%= render partial: ab_test("test_test", "layouts/test_footer_a", "layouts/test_footer_b") %>

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

EN

回答 2

Stack Overflow用户

发布于 2014-06-17 13:25:30

我想我自己想出了处理这件事的最佳方法。

在ApplicationController中创建一个helper方法ie (简单地测试它):

代码语言:javascript
运行
复制
helper_method :home_display_test

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

然后在我的视图中,我可以加载不同的分音,例如:

我认为这非常可靠;我甚至可以请求在另一个控制器中使用哪个测试版本来保存点击中的数据……

票数 0
EN

Stack Overflow用户

发布于 2014-07-26 05:24:07

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

试着这样做:

代码语言:javascript
运行
复制
<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>

应该像护身符一样起作用!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24251236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档