将复选框数据多次输入数据库失败

时间:2015-01-05 18:50:44

标签: ruby-on-rails ruby postgresql ruby-on-rails-4 checkbox

在用户注册表单中,我无法输入从多个复选框收集的数据并将其插入我的数据库。

我正在使用PostgreSQL,Rails版本4.0.1,Ruby - 1.9.3。

这是我的观看代码(new.html.erb)

div class="field col-md-5">
<%= form_for(@user) do |f|%>
<%= render 'shared/error_messages' %>
<div class="container">
  <% flash.each do |key, value| %>
    <div class="alert alert-<%= key %>"><%= value %></div>
  <% end %>
</div>

  <%= f.label :fname,"First Name" %>
  <%= f.text_field :fname,:class=>"form-control" %>
  <%= f.label :email %>
  <%= f.text_field :email,:class=>"form-control" %>

  <%= f.label :expertise,"Kindly select your field of expertise" %>
   <%= f.label :expertise,"Fundraising" %>
  <%= f.check_box(:expertise,:value=>"Fundraising") %>
   <%= f.label :expertise,"Enhancing Sales" %>
  <%= f.check_box(:expertise,:value=>"Enhancing Sales") %>
  <br>
   <%= f.label :expertise,"Marketing" %>
  <%= f.check_box(:expertise,:value=>"Marketing") %>

<%= f.submit "Create my account", class: "btn btn-large btn-primary" %>
    <% end %>
</div>
 <h4>or</h4> 
  <%=button_to "Sign Up with LinkedIn", login_path, :method => :post,class: "btn btn-large btn-primary" %>
</div>

<% end %>

当我使用此代码运行Web应用程序时,所有文本字段(例如名字)数据都会输入到数据库中,但任何复选框数据都不会被存储。

请告诉我为什么会这样?

我希望我的模型数据库专业知识列应该由分配给值符号的字符串填充,并与每个复选框一起定义,如上所示。

我想要制作一个哈希,其中每个字符串都映射到一个id,而专业知识就是列,然后存储这些由逗号分隔的唯一ID集。我们将迭代这些数字并找到相应的密钥,并在需要时在页面上打印该密钥字符串。

例如 - [1 =>"Fund Raising",2 => "Marketing",...]

但是不知道如何为此编写代码,对此行的任何建议都将不胜感激。

另外,你有一个更好的策略来解决这个问题,请告诉你。

提前致谢

PS - 模特&#34;导师&#34;在其数据库表中拥有此专栏专业知识。希望在不改变这种等级的情况下提供解决方案。

1 个答案:

答案 0 :(得分:1)

我可能会制作某种“专业知识”模型和协会。 这样,每个专业知识都会有一个相应的ID,可以在表单中分配给用户。

User
  has_many: user_expertises

UserExpertise
  belongs_to: user
  belongs_to: expertise

Expertise
  has_many: user_expertises
  has_many: expertises, through: user_expertises

导致: UserExpertise(id: integer, user_id: integer, expertise_id: integer)

您的复选框可以是:

<%= f.label "Expertise" %>$                                                                                                           
<%= f.collection_check_boxes :expertise_ids, Expertise.all, :id, :name do |cb| %>                                                       
  <% cb.label(class: "checkbox inline") {cb.check_box(class:"checkbox") + cb.text} %>                                                 
<% end %>                                                                                                                           

这篇文章帮助我复制格式化,BTW:Comment Check Boxes

相关问题