Как разрешить пользователям выбирать только один вопрос - PullRequest
0 голосов
/ 11 февраля 2019

когда мои пользователи регистрируются, им нужно выбрать три секретных вопроса и ответить.В рамках вопроса у меня есть шесть вопросов, которые определены как вспомогательные методы, например, вот картинка

security questions example

Можно ли как-нибудь убрать подсказкувопрос после выбора в первый раз?Например, для первого вопроса они выбирают «Каково отчество вашего отца».Теперь для второго вопроса они больше не могут выбрать этот подсказочный вопрос, потому что они уже ответили на него в первый раз.

Вот мой код ниже

<%= f.fields_for :role do |r| %>
  <%= r.fields_for :user do |u| %>
    <% i = 0 %>
    <%= u.fields_for :security_questions do |ff| %>
      <div class="group">
        <%= ff.select :key, options_for_select(sec_questions, selected: i), {}, { :class => 'half' } %>
        <%= ff.text_field :value, placeholder: "Answer #{i+1}", class: "half", "data-validate": '["empty"]' %>
        <div class="push"></div>
      </div><!--group-->
      <% i = i+1 %>
    <% end %>
  <% end %>
<% end %>

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Вы можете добавить jquery для этого

, например

$(document).ready ->
  questionOpts = $(".questions select:first option")

  $(".questions select").change ->
    trigger = this

    $(".questions select").each ->
      select = this

      if select != trigger
        selectedValues = $(".questions select").map -> 
          if this != select
            this.value if this.value != ""

        opts = questionOpts.clone().map -> 
          if jQuery.inArray(this.value, selectedValues) == -1
            if this.value == select.value
              $(this).prop("selected", true)
            this

        $(select).empty()
        $(select).append(opts)


  $(".questions select").trigger("change")


<div class="questions">
  <select name="x">
    <option value=""></option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
  </select>
  <select name="y">
    <option value=""></option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
  </select>
  <select name="z">
    <option value=""></option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
  </select>
</div>
0 голосов
/ 12 февраля 2019

Вы можете установить уже использованную опцию как отключенную.

[options_for_select][1] имеют возможность установить некоторые disabled_options

options_for_select(["Free", "Basic", "Advanced", "Super Platinum"], disabled: "Super Platinum")

# => <option value="Free">Free</option>
# => <option value="Basic">Basic</option>
# => <option value="Advanced">Advanced</option>
# => <option value="Super Platinum" disabled="disabled">Super Platinum</option>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...