如何将其保存到数据库?

时间:2019-12-22 06:03:56

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

我正在制作一个带有复选框的值为true或false的表单。

<%= form_tag url_for(action: 'create'), method: "post" do %>
<tbody>
  <tr>
  <td class="image"> <%= image_tag("https://cdn.iris.nitk.ac.in/images/new_dashboard/button_Human.png", class: 'list_image') %></td>
  <td>Profile</td>
  <td><%= check_box_tag '1', true, true, :checked => true, data: {toggle: "toggle", on: "Yes", off: "No", onstyle: "success", offstyle: "danger"} %></td>
  </tr>
  <tr>
  <td class="image"> <%= image_tag("https://cdn.iris.nitk.ac.in/images/new_dashboard/withdraw.png", class: 'list_image') %></td>
  <td>Withdraw Admission</td>
  <td><%= check_box_tag '2', true, true, :checked => true, data: {toggle: "toggle", on: "Yes", off: "No", onstyle: "success", offstyle: "danger"} %></td>
  </tr>
  <tr>
  <td class="image"> <%= image_tag("https://cdn.iris.nitk.ac.in/images/new_dashboard/button_academics.png", class: 'list_image') %></td>
  <td>Course Registration</td>
  <td><%= check_box_tag '3', true, true, :checked => true, data: {toggle: "toggle", on: "Yes", off: "No", onstyle: "success", offstyle: "danger"} %></td>
  </tr>
</tbody>
 “ btn btn-primary btn-lg btn-block%>

提交后,我将在控制器中执行此创建操作。

def create
1.upto(13) do |i|
  (params[:i] ? (current_user.misc_data[:pin_modules] ||= []) << i : next)
end
redirect_to '/'

结束 结束

其中pin_modules是我要在用户模型的misc_data哈希内部创建的数组。 提交时我没有收到任何错误,但是当我检查db时,没有数组,也没有保存任何内容。 有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

您正在更新对象属性,但正如您所说的那样,不将它们保存到数据库中。试试:

def create
  current_user.misc_data[:pun_modules] ||= []

  (1..13).each do |i|
    next unless params[:i]
    current_user.misc_data[:pin_modules] << i
  end

  current_user.save
  redirect_to '/'
end

或者,如果您想保留三元组,只需在重定向之前添加current_user.save