Rails应用程序发送HTML响应而不是JS

时间:2014-12-15 18:14:43

标签: javascript ruby-on-rails ruby ajax

我有一个标准的rails应用程序。我正在尝试执行简单的AJAX来添加对象。代码是我之前使用过的代码所以我希望在这种情况下我有一些错误。

无论如何,我正在尝试使用 carrierwave 上传文档。

我的控制器操作如下所示:

documents_controller

def create
  @document = @user.documents.build(document_params)
  @document.user_id = @user.id
  @result = @document.save
  if @result
    respond_to do |format|
      format.js
      format.html { raise "submitted as html" }
    end
  else
    render :back
  end
end

我的 document.html.erb 布局。

<!DOCTYPE html>
<html class="backend">
  <head>
    <%= javascript_include_tag 'documents' %>
    <%= csrf_meta_tags %>

    <%= render 'shared/fonts'%>
    <%= render 'shared/css'%>

  </head>
  <body>
    <%= yield %>
  </body>
</html>

documents.js 文件。

//= require jquery
//= require jquery_ujs
//= require jquery.validate.min
//= require validation

documents / index.html.erb 视图中测试JQuery。

<script>
  if (typeof jQuery != 'undefined') {
    alert("jQuery library is loaded!");
  }else{
    alert("jQuery library is not found!");
  }
</script>

最后, documents / create.js.erb 文件。

$('#document-table > tbody').append('<%= j render(@document) %>');
$('#document-table > tbody').append('<%= j render 'documents/share', document: @document %>');
$('#document-form')[0].reset()
$('#edit_document_<%= @document.id %>').submit();

表格:

<%= form_for [@user, @document], html: {id: 'document-form', data: {remote: true}} do |f| %>
  <%= f.text_field :name, class: "form-control" %>
  <%= f.text_area :description, class: "form-control" %>
  <%= f.file_field :file %>

  <%= button_tag class: "btn btn-primary pull-right" do %>
    <i class="ico-file-upload2 text-white mr5"></i> Upload Document 
  <% end %>
<% end %>

文档表和文档表单是我给这些对象的ID。我不认为这有任何不规则 - 并且它适用于其他网站,但当我点击提交时,回复是:

Processing by DocumentsController#create as HTML

如果有什么我可以遗失的,请告诉我。

1 个答案:

答案 0 :(得分:0)

使用:remote =&gt;真正的外部HTML选项,请尝试下面的一个

  

form_for [@ user,@ docment],:remote =&gt; true,html:{id:&#39; document-form&#39;} do | f | %GT;