【问题标题】:How to creat a checkbox with array如何使用数组创建复选框
【发布时间】:2019-04-30 14:38:52
【问题描述】:

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

我想在我的 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

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

【问题讨论】:

  • 到底是什么问题?

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


【解决方案1】:

使用以下变体之一:

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

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

【讨论】:

  • 感谢您的回答,但我的问题更多是关于控制器,如果选择是多个,我不知道要写什么来将数据发送到我的数据库
【解决方案2】:

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

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

【讨论】:

  • 感谢您的回答,但我的问题更多是关于控制器,如果选择是多个,我不知道要写什么来将数据发送到我的数据库
【解决方案3】:

有两个问题。

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

【讨论】:

  • 谢谢,我修复了前两个问题,这些错误只是在这个论坛上,因为我简化了我的真实代码只突出我的问题,所以我犯了粗心的错误。尽管如此,我还是更新了我的问题并删除了不同的错误,当我进行 subbit 时,复选框数据不会发送到我的 bdd。我的控制器如下:class ResultvaluesController &lt; ApplicationController def resultvalue_params params.require(:resultvalue).permit(:values) end end
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 2015-11-23
  • 2018-07-22
  • 1970-01-01
  • 2018-07-03
  • 2016-08-29
  • 2011-08-08
相关资源
最近更新 更多