Rails 使用文本区域发送 AJAX 响应

问题描述 投票:0回答:1

我正在使用以下表格:

<%= form_for(@document, :remote => true) do |f| %>

        <%= f.label :asset, "Document to Upload" %><br />
        <%= f.file_field :asset, :class => "behaves", "data-behave" => "passValueOnChange", "data-recipient" => "#campaign_document_name" %>

      <%= f.label :name, :class => 'required' %><br />
      <%= f.text_field :name, :required => true %>

    <%= f.submit "Upload Document", :class => "button" %>

<% end %>

提交给以下控制者:

def create
@document = CampaignDocument.new(params[:campaign_document])
@campaign.documents << @document
  respond_to do |format|
    format.js
  end
end

应该返回以下

create.js.erb

 <%= remotipart_response do %>
  <% unless @document.errors.any? %>
    $('.tablewrapper').html( '<%= escape_javascript(render :partial=>'documents_table') %>' );
    alertify.success("File Updloaded");
  <% else %>
    <% @document.errors.each do |attr, msg|%>
    alertify.error("<%= msg %>",10000);
    <% end %>
  <% end %>
<% end %>

但是响应被包裹在一个

textare
标签中。这很奇怪:

<textarea data-type="text/javascript" response-code="200">
    $('.tablewrapper').html('{code for HTML ommited for brevity}');
    alertify.success(&quot;File Updloaded&quot;);
</textarea>

注意 其他类似风格的 AJAX 函数在同一安装上的行为不是这样的。

ruby-on-rails ajax ruby-on-rails-3
1个回答
0
投票

此错误的发生是因为 gem“remotipart”。 该分支未与 jangosteve/remotipart master 合并。 您可以通过更新您的

Gemfile
:

来修复它
gem 'remotipart', :git => 'https://github.com/westonganger/remotipart', :branch => 'fix_escape_javascript'

你可以在这里得到这个问题的参考: https://github.com/nathanvda/cocoon/issues/473 https://github.com/formasfunction/remotipart/blob/master/lib/remotipart/view_helper.rb#L7

© www.soinside.com 2019 - 2024. All rights reserved.