Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用AJAX在Rails 5编辑表单中发送更新请求_Javascript_Jquery_Ruby_Ajax_Ruby On Rails 5 - Fatal编程技术网

Javascript 使用AJAX在Rails 5编辑表单中发送更新请求

Javascript 使用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初学者,但据我所知,编辑表单应该向控制器发送

在RubyonRails 5中使用AJAX更新和保存属性时,页面上的编辑表单出现问题。目标是在同一页面中呈现编辑表单,然后在编辑信息后提交表单并备份信息。让编辑表单显示在页面上效果很好,但在那之后它什么也不做

我有一种感觉,它与表单发送到的位置有关,但我似乎无法理解。我已经搜索了所有地方,对于Rails3/4似乎有很多答案,但是对于Rails5的要求是不同的。从我能找到的所有示例来看,我的代码看起来是正确的,但显然我遗漏了一些东西。我还是一个rails初学者,但据我所知,编辑表单应该向控制器发送更新请求,但它似乎没有这样做。感谢您的帮助。代码如下

控制器

看法

edit.js.erb

update.js.erb

_编辑_prop_form.html.erb部分

编辑表单呈现的HTML


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">