Как создать флажок с массивом - PullRequest
0 голосов
/ 30 апреля 2019

Я хочу отобразить несколько опций для моего пользователя и чтобы он мог выбрать одну или несколько опций

Я хочу загрузить чек в моем bdd

это идеявида

#views/values/new.html.erb*

<% @values =["Power", "Independance", "Tradition"] %>
<%= form_for @resultvalue do |f| %>
   <% @values.each do | value | %>
       <%= f.check_box :values, { multiple: true }, value, false %>
       <%= f.label value %>
   <% end %>
   <%= f.submit%>  
<% end %>
#controller/resultvalue_controller.rb

class ResultvaluesController < ApplicationController
[...]
 def resultvalue_params
     params.require(:resultvalue).permit(:values)
 end
end
#models/resultvalue.rb

class Resultvalue < ApplicationRecord
    serialize :values, Array 
end

У меня вопрос к контроллеру, я не знаю, что написать для отправки данных в мою базу данных, если выбрано несколько

Ответы [ 3 ]

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

Это короткий и простой способ, если ваш массив короткий.

["Power", "Independance", "Tradition"].each do |value|%>
  <div>
    <input type="checkbox" id="<%= value %>" name="<%= value %>">
    <label for="<%= value %>"><%= value %></label>
  </div>
<% end %>

<button class="btn btn-success" type="submit">
  Validate
</button>

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

class ModelA < ApplicationRecord
  CHOICES = ["Power", "Independance", "Tradition"].freeze 
end

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

ModelA::CHOICES.each do |value|%>
  <div>
    <input type="checkbox" id="<%= value %>" name="<%= value %>">
    <label for="<%= value %>"><%= value %></label>
  </div>
<% end %>

<button class="btn btn-success" type="submit">
  Validate
</button>
0 голосов
/ 02 мая 2019

Было две проблемы.

  1. Выберите, какую переменную вы хотите использовать: @values ​​или значения.
  2. Вам не нужно = в первой строке, если вы не хотите, чтобы это было видно в представлении.
    <%= values =["Power", "Independance", "Tradition"] %>
    <% @values.each do |value|%>
      <div>
        <input type="checkbox" id="<%= value %>" name="<%= value %>">
        <label for="<%= value %>"><%= value %></label>
      </div>
     <% end %>
    <button class="btn btn-success" type="submit">
        Validate
    </button>

Это заставит ваш вид работать.

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

После этого вы можете сохранять свои данные в контроллере из параметров, например: User.update (power: params [: Power])

Предлагаю взглянуть на это: https://guides.rubyonrails.org/active_record_basics.html

Это одно из лучших мест для начала: https://www.tutorialspoint.com/ruby-on-rails

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

Используйте один из следующих вариантов:

<% @values = ["Power", "Independance", "Tradition"] %>
<% @values.each do |value| %>

или

<% values = ["Power", "Independance", "Tradition"] %>
<% values.each do |value| %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...