为什么即使分配了默认的mysql值,布尔属性也保存为null

时间:2018-09-01 03:29:22

标签: ruby-on-rails ruby devise

这肯定是一个简单的错误,但我无法查明其发生原因。我已更改了先前问题的帖子,而这个问题实际上并没有从我的项目中准确发布。对于那些看过上一篇文章的人来说,这是一个更好的文章。本质上,我有两个布尔值dataListPane:accepted。我已经分配了默认的:complete:accepted => true,但是当我创建一个新的:complete => false对象时,它们仍保存为null。文件:

accepts_controller.rb(创建和参数)

:accept

new.html.erb

def create
  @self_delivery = SelfDelivery.find_by(
    id: params[:self_delivery_id])

  begin
    @accept = Accept.create(
      :user_id => current_user.id,
      :self_delivery_id => @self_delivery.id,
      :accepted => params[:accepted],
      :complete => params[:complete])

  rescue ActiveRecord::RecordNotUnique => e
    flash[:notice]= 'Duplicate Record'
  end

  if @accept.save!
    redirect_to accept_path(@accept)
    flash[:notice]= 'Accept was successfully created.'
  end
end

放入params.inspect

<h1>New Accept</h1>

<%= form_with(model: @accept, url: self_delivery_accepts_path(:user_id => params[:user_id], :self_delivery_id => params[:self_delivery_id]), :method => :post) do |form| %>
<% if @accept.errors.any? %>
<div id="error_explanation">
  <h2><%= pluralize(@accept.errors.count, "error") %> prohibited this accept from being saved:</h2>

  <ul>
  <% @accept.errors.full_messages.each do |message| %>
    <li><%= message %></li>
  <% end %>
  </ul>
 </div>
<% end %>

<div class="field">
<%= form.label :accepted %>
<%= form.check_box :accepted, checked: true %>
</div>

<div class="field">
<%= form.label :complete %>
<%= form.check_box :complete, checked: true %>
</div>

<div class="actions">
<%= form.submit %>
</div>
<% end %>


<%= link_to 'Back', self_delivery_accepts_path(:self_delivery_id => params[:self_delivery_id], :accepted => params[:accepted], :complete => params[:complete]) %>

1 个答案:

答案 0 :(得分:0)

这是来自前端的参数:

..., "accept"=>{"accepted"=>"1", "complete"=>"0"}, ...

在代码中的含义是,您应遵循以下格式:

:accepted => params['accept']['accepted'],
:complete => params['accept']['complete']
相关问题