我表中的一个字段需要可编辑。我正在尝试通过使用某些JQuery来实现它,但是,该属性并未在数据库中更新,相反,它只是完全删除了该属性并变为null。但是,我的服务器日志显示一个提交,其中尝试属性更新显示在哈希中。
Rails控制器:
def edit
respond_to do |format|
format.js { render partial: 'update-advise' }
end
end
def update
@pan.update_advise!
respond_to do |format|
format.js { redirect_to root_path }
end
end
Pan模型方法:
def update_advise!
update_attributes!(advise: advise)
end
这是我想要可编辑的唯一属性。
我的表单:
<div id='update-advise'>
<div>
<h2>New Advise Amount</h2>
</div>
<div>
<%= form_with model: @pan, remote: true do |f| %>
<%= f.text_field :advise %>
<%= f.submit 'Update' %>
<% end %>
</div>
</div>
最后,我在写jquery的地方update-advise.js.erb
$("#condense-table").hide();
$("#update-advise").html("<%= escape_javascript(render :partial => 'update_advise_field') %>");
如上所述,服务器日志显示提交但不更新数据库:
于2019-03-19 17:07:43 -0400为127.0.0.1开始PATCH“ / pans / 1” 由PansController#update作为JS参数进行处理: {“ utf8” =>“✓”, “ authenticity_token” =>“ ccB9wsuhaeAfgpPizUOj / NGYntqNIV / C + h5xEZ3tKtyVjnE8kDk569t / t3CVyYErTptdhgys8Qcm93Fp / S / nMQ ==”, “ pan” => {“ advise” =>“ 600”} ,“ commit” =>“ Update”,“ id” =>“ 1”} 加载(0.3ms)选择“ pans”。*从“ pans”到“ pans”。“ id” = $ 1 LIMIT $ 2 [[“ id”,1],[“ LIMIT”,1]]↳ app / controllers / pans_controller.rb:45(0.2ms)开始↳ app / models / pan.rb:5电池负载(0.2ms)选择“电池”。* 从“电池”到“电池”。“ id” = $ 1 LIMIT $ 2 [[“ id”,1], [“ LIMIT”,1]]↳app / models / pan.rb:5(0.2ms)COMMIT↳ app / models / pan.rb:5(0.2ms)开始 app / controllers / pans_controller.rb:15(0.3ms)提交↳ app / controllers / pans_controller.rb:15重定向到 http://localhost:3000/在27毫秒内完成200 OK(ActiveRecord:6.1毫秒)
第二,有没有一种方法可以使字段直接在表中可编辑而没有任何宝石呢?