Как передать значение типа входа радио в application_helper? - PullRequest
2 голосов
/ 23 апреля 2019

Я создаю шаблон администратора, и есть раздел настройщика, в котором я создал 3 переключателя (названных: Красный, Синий, Зеленый). Есть левое меню навигации боковой панели, и я хочу изменить цвет фона меню навигации боковой панели, нажимая переключатели. Если я нажимаю на кнопку, это изменяет bg-цвет меню навигации боковой панели, добавляя класс, но если я иду на другую страницу, она перезагружается и класс удаляется.

Я попробовал одну вещь, в мой application_helper.rb я добавил следующий код

    def is_active(action)
        @color = "red"
        params[:action] == action_name ? @color : nil                  
      end

и в моей папке раскладок у меня есть частичный файл _sidebar.html.erb, и во внешнем div я использую этот помощник, как показано ниже

    <div class="sidebar-nav <%= is_active('action_name') %>" id="collapse-sidebar"  >

Что я делаю здесь, проверяю имя действия, если оно совпадает, затем добавляю класс red, который хранится в переменной экземпляра @ color

Если я могу передать значение переключателя в файл application_helper динамически, это означает, что если я нажимаю на красный, значение должно быть красным, зеленым, тогда значение должно быть зеленым. и с помощью которого я могу динамически изменять имя класса в помощнике приложения, и, кроме того, это изменило бы цвет боковой панели.

Пожалуйста, если я делаю что-то не так, или это неправильный способ сделать это, или мы не можем достичь такой функциональности в ruby ​​на рельсах, пожалуйста, подтвердите мне, что это было бы замечательно.

Спасибо

Ответы [ 2 ]

2 голосов
/ 23 апреля 2019

Не уверен, что я вас понимаю, но переменные экземпляра теряются между запросами, поэтому нет смысла использовать @color вместо red.

Если вы хотите persist red по запросам затем сохраните его в сеансе или передайте в качестве параметра.

1 голос
/ 23 апреля 2019

Я слегка перефразирую ваш код боковой панели:

<div class="sidebar-nav <%= selected_color(params[:action]) %>" id="collapse-sidebar"  >

Если вы передаете имена цветов («Красный», «Синий» или «Зеленый») в параметре action, код application_helper.rb будет выглядеть следующим образом:

def selected_color(action_color_name)
  colors = ['Red','Blue', 'Green']
  colors.include? action_color_name ? action_color_name : nil                  
end

Кроме того, сохраняйте action в скрытой переменной, чтобы цвета сохранялись при переходе на другую страницу. Если это не сработает, просто сохраните sidebar_color в таблице конфигурации в базе данных и обновите атрибут, нажав соответствующие переключатели. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...