Флажки, показывающие для формы несколько флажок - PullRequest
0 голосов
/ 13 марта 2019

Я создаю форму с несколькими флажками, варианты которых представляют собой список ролей пользователей, с моим представлением следующим образом:

        <% roles = User.roles %>
        <% roles.each do |role| %>
          <%= f.label roles.each do %>
            <%= f.check_box :role, { multiple: true }, role, nil %>
          <% end %>
        <% end %>

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

Вывод User.roles выглядит следующим образом:

{"admin"=>0, "developer_admin"=>1, "division_admin"=>2, "development_admin"=>3, "site_admin"=>4}

Что за очевидное здесь я пропускаю?

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Мой код похож на ответы SRack, но я настроил его для вывода хэша и отредактировал имя роли, поэтому мы можем нажать на текст, и он активирует опцию:)

<% User.roles.each do |name, value| %>
  <%= f.label "role_#{value}" do %>
    <%= f.check_box :role, { multiple: true }, value, nil %>
    <%= name %>
  <% end %>
<% end %>
0 голосов
/ 13 марта 2019

Мне кажется, что проблема исправлена ​​следующим изменением:

Изменения, основанные на вашем недавнем обновлении: User.roles - это хеш, который мы деструктурируем и передадим следующим образом:

    <% roles = User.roles %>
    <% roles.each do |name, value| %>
      #                v here v
      <%= f.label :role, name %>
      <%= f.check_box :role, { multiple: true }, value, nil %>
    <% end %>

Скорее всего, вы передаете Enumerator метке, а не самой роли.Попробуйте позвонить User.roles.each в консоли без блока, вы получите что-то вроде: #<Enumerator: ...>.

В качестве краткого примечания предпочтительнее выполнять назначение за пределами представления: вы будетелучше назначить @roles = User.roles в вашем контроллере и использовать переменную экземпляра в вашем представлении.

Надеюсь, что это поможет - дайте мне знать, как вы ладите.

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