如何使用数组创建复选框

时间:2019-04-30 14:38:52

标签: ruby-on-rails ruby ruby-on-rails-5

我想向用户显示几个选项,并且他可以选择一个或多个otions

我要上传支票中的支票

这是表格的想法

from PyQt5.QtWidgets import *
import sys

class GroupBox(QWidget):

    def __init__(self):
        QWidget.__init__(self)

        self.setGeometry(20,20,900,700)
        self.setWindowTitle("Elevator Group Control System Simulator")
        layout = QGridLayout()
        self.setLayout(layout)

        groupbox = QGroupBox("Algorithm to use")
        groupbox.setCheckable(False)
        layout.addWidget(groupbox)

        hbox = QHBoxLayout()
        hbox.setGeometry(10,10,100,100)
        groupbox.setLayout(hbox)

        radiobutton = QRadioButton("Good Picker")
        hbox.addWidget(radiobutton)

        radiobutton = QRadioButton("Naive Picker")
        hbox.addWidget(radiobutton)


app = QApplication(sys.argv)
screen = GroupBox()
screen.show()
sys.exit(app.exec_())
#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

我的问题是关于控制器的,如果选择多个,我不知道写什么将数据发送到数据库中

3 个答案:

答案 0 :(得分:0)

使用以下变体之一:

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

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

答案 1 :(得分:0)

如果数组很短,这是一种简短的方法。

["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>

答案 2 :(得分:0)

有两个问题。

  1. 选择要使用的变量:@值或值。
  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