【问题标题】:Rails Application sending HTML responses instead of JSRails 应用程序发送 HTML 响应而不是 JS
【发布时间】:2014-12-15 18:14:42
【问题描述】:

我有一个标准的 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

如果有什么我可能遗漏的,请告诉我。

【问题讨论】:

    标签: javascript ruby-on-rails ruby ajax


    【解决方案1】:

    在 html 选项之外使用 :remote => true,试试下面一个

    form_for [@user, @document], :remote => true, html: {id: 'document-form'} do |f| %>

    【讨论】:

    • 仍以 HTML 格式提交。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 2018-12-17
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    • 2015-06-12
    • 2020-04-30
    相关资源
    最近更新 更多