Javascript 使用AJAX在Rails 5编辑表单中发送更新请求
在RubyonRails 5中使用AJAX更新和保存属性时,页面上的编辑表单出现问题。目标是在同一页面中呈现编辑表单,然后在编辑信息后提交表单并备份信息。让编辑表单显示在页面上效果很好,但在那之后它什么也不做 我有一种感觉,它与表单发送到的位置有关,但我似乎无法理解。我已经搜索了所有地方,对于Rails3/4似乎有很多答案,但是对于Rails5的要求是不同的。从我能找到的所有示例来看,我的代码看起来是正确的,但显然我遗漏了一些东西。我还是一个rails初学者,但据我所知,编辑表单应该向控制器发送更新请求,但它似乎没有这样做。感谢您的帮助。代码如下 控制器 看法 edit.js.erb update.js.erb _编辑_prop_form.html.erb部分 编辑表单呈现的HTMLJavascript 使用AJAX在Rails 5编辑表单中发送更新请求,javascript,jquery,ruby,ajax,ruby-on-rails-5,Javascript,Jquery,Ruby,Ajax,Ruby On Rails 5,在RubyonRails 5中使用AJAX更新和保存属性时,页面上的编辑表单出现问题。目标是在同一页面中呈现编辑表单,然后在编辑信息后提交表单并备份信息。让编辑表单显示在页面上效果很好,但在那之后它什么也不做 我有一种感觉,它与表单发送到的位置有关,但我似乎无法理解。我已经搜索了所有地方,对于Rails3/4似乎有很多答案,但是对于Rails5的要求是不同的。从我能找到的所有示例来看,我的代码看起来是正确的,但显然我遗漏了一些东西。我还是一个rails初学者,但据我所知,编辑表单应该向控制器发送
TL;DR Edit表单从初始编辑按钮在页面上呈现,但表单上的编辑按钮不会更新和保存编辑的信息并显示原始div。正如mr12086所指出的,在我的更新方法中@property应该是@properties。进行更改后,所有操作都按预期进行。在更新方法中,什么是@property?它应该是正在调用的属性的实例。但是你的问题让我觉得应该是“@properties”而不是……”annddd这一直是个问题。有了第二双眼睛,我想退一步是值得的。谢谢你指出这一点+我的朋友,当你使用ajax时,让chrome开发工具保持打开状态总是很好的。看看这里的一些提示非常酷@sameera207,谢谢你的信息!如果你有其他好的资源,我很乐意去看看。请随时给我留言!
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
<%= link_to fa_icon("edit", text: "Edit Property"),
edit_property_path(@properties), remote: true, class: "btn btn-
primary btn-large btn-ouline" %>
$('div#show-edit').replaceWith('<%= j render("edit_prop_form") %>');
$('#edit_property_<%= @properties.id %>').replaceWith('<%= j render("properties_display") %>');
<%= 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 %>
<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">