form_for没有jquery的ajax调用?

时间:2014-12-01 18:02:38

标签: jquery ajax ruby-on-rails-4 form-for

我无法使用form_for获取远程选项。 Rails 4. jQuery不是一个选项。我想知道是否需要jQuery或者我的代码是否有错误。

表单(更新操作,适用于服务器端)。

<%= form_for @image, :remote => true, :authenticity_token => true, :url => image_path(@image, :format => :json), :data => {type: :json}, :method => "patch", :html => {:class => 'base-64-edit-form', :multipart => true, :id => "base-64-edit-form", :class => "hide" } do |f| %>
<%= f.hidden_field :update_image_data %>
<%= f.hidden_field :user_id, :value => current_user.id %>
<%= f.hidden_field :width, :value => @image.width %>
<%= f.hidden_field :height, :value => @image.height %>
 <%= f.hidden_field :folder_id %>
 <div class="actions">
<%= f.submit %>
</div>
<% end %>

表单提交:

document.getElementById("image_update_image_data").setAttribute("value", data);
document.getElementById("image_width").setAttribute("value", parseInt(pixel_canvas.style.width));
document.getElementById("image_height").setAttribute("value", parseInt(pixel_canvas.style.height));
document.getElementById("image_folder_id").setAttribute("value", config.folder_id);
document.body.addEventListener("ajax:success", function(e){
                console.log("ajax SUCCESS");
            })
document.body.addEventListener("ajax:failure", function(e){
                console.log("ajax FAILURE");
            })
document.getElementById("base-64-edit-form").submit();
document.getElementById("loading").classList.add("active");

控制器操作:

 def update
respond_to do |format|
  if @image.update(image_params)
    format.json { render :json => true}
  else
    format.json { render :json => @image.errors, status: :unprocessable_entity }
  end
end
end

成功更新会在页面上显示单词“true”,而不是将真正的json值返回给回调。所以我假设没有进行ajax调用而且没有任何魔法发生。这可能是因为我没有使用jQuery吗?

如果我更换

format.json { render :json => true}

format.json { head :no_content }

页面未重新呈现,Chrome获得200,但出现错误。

0 个答案:

没有答案