Ich habe eine Indexansicht, die Bestellungen in einer Sammlung auflistet. Jede Bestellung hat einen Status. Ich möchte den Status einer Bestellung auf der Indexseite im AJAX-Stil aktualisieren können.Schienen AJAX Update auf Wählen
Nicht sicher, warum die ID NULL ist, wenn Sie versuchen, den Datensatz zu aktualisieren.
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()
1.363.210
routes.rb
patch 'pf_orders/update_receiver_status', as: 'update_receiver_status'
LOGS
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):
Ich bin froh, dass es funktioniert hat. –