我试图在我的Rails应用程序中安装Vanity A/B Testing,但我甚至无法从GitHub页面获取示例。我已经生成了虚荣模型并运行迁移并制作了实验文件,但是只要我加入了像
这样的测试<%= ab_test :price_options %>
程序抛出错误:
invalid value for Integer(): "{:conditions=>{:experiment_id=>\"price_options\""
在我的controllers / application_controller.rb中我只是:
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
use_vanity
end
我没有包含用户标识符,因为我还没有在这个应用程序中构建一个用户标识符,但是Vanity文档说如果没有提供参数,Vanity将只使用cookie,所以不应该使用#39是一个问题。如果有人知道为什么会抛出这个神秘的错误,我会非常感激!
编辑:我应该补充一点,我实际上是从头开始创建一个新的rails应用程序,只是为了尝试调试它。我所做的就是启动一个应用程序并按照自述文件说明安装虚荣,我也遇到了同样的错误。这也发生在两台不同的机器上,所以我怀疑它是一个显而易见的东西,我不知道,但我无法确定(否则我不会在这里!)。
编辑:我已经决定使用Split宝石,而且没有麻烦。
答案 0 :(得分:1)
抛出此错误是因为Vanity的当前发行版使用了不推荐使用的Rails find(:first)方法,特别是:
VanityParticipant.first(:conditions=>{ :experiment_id=>experiment.to_s, :identity=>identity.to_s })
这不再适用于Rails 4.1,但已在Vanity的主分支中修复,因此您可以通过添加以下内容在Rails 4.1应用程序中解决此问题:
gem 'vanity', :git => 'git@github.com:assaf/vanity', :branch => 'master'
到您的Gemfile。
答案 1 :(得分:0)
使用
class ApplicationController < ActionController::Base
protect_from_forgery
use_vanity
end
和
# experiments/price_options.rb
ab_test "Price options" do
description "Mirror, mirror on the wall, who's the best price of all?"
alternatives(19, 25, 29)
end
和
class StaticController < ApplicationController
def home
end
end
以下视图加载并设置vanity_id
Cookie:
<h1>Static#home</h1>
<p>Find me in app/views/static/home.html.erb</p>
<h2>Get started for only $<%= ab_test :price_options %> a month!</h2>
<%= link_to 'Make a new account', new_account_path %>