我有一个索引视图,列出集合中的订单。每个订单都有一个状态。我希望能够从索引页面AJAX样式更新订单的状态。Rails选择的AJAX更新
不知道为什么在尝试更新记录时ID为NULL。
index.html.erb
<h1>Recent Orders</h1>
<section class="order-results">
<ol class="list-group">
<%= render partial: 'pf_order', collection: @pf_orders %>
</ol>
</section>
_pf_orders.html.erb
<%= form_for(pf_order, url: update_receiver_status_path(pf_order)) do |f| %>
<%= f.select :receiver_status, options_for_select(receiver_statuses, f.object.receiver_status), {include_blank: true}, {class: 'form-control'} %>
<% end %>
pf_orders_controller.rb
def index
@pf_orders = PfOrder.all
end
def update_receiver_status
@status = PfOrder.find_by(id: params[:id])
@status.update_attributes(pf_order_params)
end
pf_orders.coffee
jQuery ($) ->
$(document).ready ->
$("#pf_order_receiver_status").bind 'change', ->
$.ajax
type: 'PATCH'
url: 'pf_orders/update_receiver_status'
data: 'pf_order[receiver_status]=' + $('#pf_order_receiver_status').val()
个
的routes.rb
patch 'pf_orders/update_receiver_status', as: 'update_receiver_status'
日志
Started PATCH "/pf_orders/update_receiver_status" for 127.0.0.1 at 2016-10-01 17:36:11 -0400
Processing by PfOrdersController#update_receiver_status as */*
Parameters: {"pf_order"=>{"receiver_status"=>"Completed"}}
PfOrder Load (1.0ms) SELECT "pf_orders".* FROM "pf_orders" WHERE "pf_orders"."id" IS NULL LIMIT $1 [["LIMIT", 1]]
Completed 500 Internal Server Error in 4ms (ActiveRecord: 1.0ms)
NoMethodError (undefined method `update_attributes' for nil:NilClass):
我很高兴你的工作。 –