% experiment = @experiment %>
<%= experiment.name %><% unless experiment.active? %> Completed<% end %>
<%# NOTE: The root_path is the Rails's engine root path, not the application's root path (e.g. "/") %>
<%= link_to "Back to Experiments", root_path %>
>
Experiment Details
<% if experiment.description %>
<%= experiment.description %>
<% end %>
>
Goals for <%= experiment.name %>
<% experiment.goals.each do |goal| %>
<%# I would love to use a route/path, but the router at runtime was
not recognizing it. The `rails routes` would show it, but not
the view handler. %>
- <%= link_to goal.titleize, "./#{experiment.id}/#{goal}" %>
<% end %>
<% if experiment.id.start_with?("feed_strategy") %>
<% experiment.variants.each do |variant| %>
Config for <%= variant %> <% if variant == experiment.winner %>✓<% end %>
<% config = Articles::Feeds::VariantAssembler.user_config_hash_for(variant: variant) %>
- Description
- <%= config["description"] || "n/a" %>
- Weight
- <%= experiment.weights[experiment.variants.index(variant)] %>
- Order Lever
- <%= config["order_by"] %>
- Reseed Randomizer on Each Request
- <%= config["reseed_randomizer_on_each_request"] %>
<% config["levers"].each do |lever_key, lever| %>
<% next unless lever.key?("query_parameters") %>
- Parameters for <%= lever_key %> relevancy lever
<% lever["query_parameters"].each do |key, value| %>
- <%= key %>: <%= value %>
<% end %>
<% end %>
<% lever_range = config["levers"].map { |_, lever| lever["cases"].map(&:first) }.flatten.uniq.sort %>
Relevency Lever(s): Fallback and Range Factors
| Lever |
Fallback |
<% lever_range.each do |i| %>
<%= i %> |
<% end %>
<% config["levers"].each do |lever_key, lever| %>
<% cases = lever["cases"].each_with_object({}) { |(key, value), mem| mem[key] = value } %>
| <%= lever_key %> |
<%= lever["fallback"] %>
<% lever_range.each do |i| %>
| <%= cases.fetch(i, " ".html_safe) %> |
<% end %>
<% end %>
<% end %>
<% end %>