1

我正在尝试在我的 Rails 应用程序中安装Vanity A/B 测试,但我什至无法从 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,所以这应该不是问题。如果有人知道为什么会抛出这个神秘的错误,我将不胜感激!

编辑:我应该补充一点,我实际上从头开始了一个新的 Rails 应用程序,只是为了尝试调试它。从字面上看,我所做的只是按照自述文件的说明启动一个应用程序并安装虚荣心,但我得到了同样的错误。这也发生在两台不同的机器上,所以我怀疑我错过了一些明显的东西,但我不能确定(否则我不会在这里!)。

编辑:我已经决定改用 Split gem,并且没有遇到任何问题。

4

2 回答 2

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。

于 2014-06-18T13:07:15.700 回答
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_idcookie:

<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 %>
于 2014-06-10T02:48:51.383 回答