Ich habe ein Problem mit einem Bearbeitungsformular auf meiner Seite, um Attribute mit AJAX in Ruby on Rails 5 zu aktualisieren und zu speichern. Das Ziel besteht darin, das Bearbeitungsformular in dasselbe zu rendern Seite und dann nach der Bearbeitung der Informationen das Formular absenden und die Info-Show sichern lassen. Das Edit-Formular auf der Seite erscheinen zu lassen funktioniert einwandfrei, aber danach tut es einfach nichts.Senden einer Aktualisierungsanforderung in Rails 5-Formular mit AJAX bearbeiten
Ich habe das Gefühl, es hat etwas mit, wo das Formular sendet, aber ich kann nicht scheinen, es herauszufinden. Ich habe überall gesucht und es scheint, es gibt viele Antworten da draußen für Schienen 3/4, aber die Anfrage ist anders für Schienen 5. Von allen Beispielen, die ich finden kann, sieht mein Code richtig aus, aber klar, mir fehlt etwas. Ich bin immer noch ein Anfänger Rails-Entwickler, aber von meinem Verständnis der Edit-Formular sollte eine Update-Anfrage an den Controller senden, aber es scheint nicht so zu tun. Jede Hilfe wird geschätzt. Code unten.
-Controller
def create
@properties = Property.new(property_params)
if @properties.save
flash[:success] = "Property created successfully!"
redirect_to properties_path
else
render 'new'
end
end
def edit
@properties = Property.find(params[:id])
respond_to do |format|
format.html { @properties.save }
format.js
end
end
def update
@properties = Property.find(params[:id])
@property.update_attributes(property_params)
respond_to do |format|
format.html { redirect_to property_path }
format.js
end
end
Ansicht
<%= link_to fa_icon("edit", text: "Edit Property"),
edit_property_path(@properties), remote: true, class: "btn btn-
primary btn-large btn-ouline" %>
edit.js.erb
$('div#show-edit').replaceWith('<%= j render("edit_prop_form") %>');
update.js.erb
$('#edit_property_<%= @properties.id %>').replaceWith('<%= j render("properties_display") %>');
_edit_prop_form.html.erb Teil
<%= bootstrap_form_for(@properties, layout: :horizontal, control_col: "col-sm-4", remote: true) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.text_field :company, class: 'form-control' %>
<%= f.text_field :address1, class: 'form-control' %>
<%= f.text_field :address2, class: 'form-control' %>
<%= f.text_field :city, class: 'form-control' %>
<%= f.text_field :state, class: 'form-control' %>
<%= f.text_field :zipcode, class: 'form-control' %>
<%= f.form_group do %>
<%= f.submit "Edit", class: "btn btn-primary" %>
<% end %>
<% end %>
HTML-Code, bearbeiten Form
<form role="form" class="form-horizontal" id="edit_property_99"
action="/properties/99" accept-charset="UTF-8" data-remote="true"
method="post"><input name="utf8" type="hidden" value="✓"><input
type="hidden" name="_method" value="patch">
TL macht; DR Formular bearbeiten Rendern auf der Seite von der ersten Bearbeitungsschaltfläche, aber "Bearbeiten" Button auf dem Formular aktualisiert und speichert keine bearbeiteten Informationen und zeigt das ursprüngliche div.
In der Update-Methode, was ist @property? – mr12086
Nun, es sollte die Instanz der Eigenschaft sein, die aufgerufen wird. Aber deine Frage lässt mich denken, dass es "@properties" stattdessen sein sollte ... –
.... annddd das war das Problem die ganze Zeit. Zahlt sich aus, um einen zweiten Satz Augen zu haben und einen Schritt zurück zu nehmen, denke ich. Danke, dass du darauf hingewiesen hast! +1 für dich, mein Freund. –