Как вставить рубиновую логику в атрибут style в теге div в файле erb? - PullRequest
0 голосов
/ 11 апреля 2019

Я создаю приложение Ruby on Rails, которое принимает определенные данные от пользователя и создает отчет. Я знаю, как вставить код ruby ​​в файл erb, но когда я пытаюсь вставить его в атрибут style в теге div, он не работает.

Я уже пытался выполнить вычисления в контроллере для infuencer_reports, а затем просто вставил переменные экземпляра в файл show.html.erb.

show.html.erb:

<div
            class="pie pie1"
            style="margin: auto;width: 100px;height: 100px;border-radius: 50%;background-origin: border-box;background-image: conic-gradient(
              #237e05 0 <%= @fitness_section %>deg,
              #0e89c2 0 <%= @food_section %>deg,
              #dd9b27 0 <%= @fashion_section %>deg,
              #8922c9 0 <%= @photography_section %>deg,
              #1ae6c7 0 <%= @kids_family_section %>deg,
              #f05d84 0 <%= @travel_section %>deg,
              #c94e22 0
              );"
          ></div>

influencer_reports_controller.rb

    @fitness_section = ((@report.total_category_likes('Fitness')/@report.total_likes)*360)
    @food_section = ((@fitness_section + @report.total_category_likes('Food')/@report.total_likes)*360)
    @fashion_section = ((@food_section + @report.total_category_likes('Fashion')/@report.total_likes)*360)
    @photography_section = ((@fashion_section + @report.total_category_likes('Photography')/@report.total_likes)*360)
    @kids_family_section = ((@photography_section + @report.total_category_likes('Kids/Family')/@report.total_likes)*360)
    @travel_section = ((@kids_family_section + @report.total_category_likes('Travel')/@report.total_likes)*360)

Он должен выглядеть как круговая диаграмма с разноцветным сечением, но он выглядит как один полный круг только последнего цвета в градиенте.

1 Ответ

0 голосов
/ 11 апреля 2019

Для каждого результата вы должны попытаться добавить число с плавающей запятой хотя бы на одно из следующих чисел:

((@report.total_category_likes('Fitness').to_f/@report.total_likes)*360)

И, возможно, добавить метод округления после

((@report.total_category_likes('Fitness').to_f/@report.total_likes)*360).round

например.

360 * (100 / 124) => 0
360 * (100 / 124.to_f)  => 290.3225806451613
(360 * (100 / 124.to_f)).round => 290
...