这肯定是一个简单的错误,但我无法查明其发生原因。我已更改了先前问题的帖子,而这个问题实际上并没有从我的项目中准确发布。对于那些看过上一篇文章的人来说,这是一个更好的文章。本质上,我有两个布尔值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]) %>
答案 0 :(得分:0)
这是来自前端的参数:
..., "accept"=>{"accepted"=>"1", "complete"=>"0"}, ...
在代码中的含义是,您应遵循以下格式:
:accepted => params['accept']['accepted'],
:complete => params['accept']['complete']