Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.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 Rails js.erb不渲染部分文件,但渲染响应文件_Javascript_Jquery_Ruby On Rails_Ruby On Rails 4_Actionview - Fatal编程技术网

Javascript Rails js.erb不渲染部分文件,但渲染响应文件

Javascript Rails js.erb不渲染部分文件,但渲染响应文件,javascript,jquery,ruby-on-rails,ruby-on-rails-4,actionview,Javascript,Jquery,Ruby On Rails,Ruby On Rails 4,Actionview,我有以下部分文件 _report.html.erb <h5>REPORT</h5> <hr/> <%= link_to "Extract REPORT", "#", :class => 'btn btn-primary', id: 'load_panel' %> <br/> <br/> <div class="row"> <% rand = Time.now.to_i - Random.new

我有以下部分文件

_report.html.erb

<h5>REPORT</h5>
<hr/>
<%= link_to "Extract REPORT", "#", :class => 'btn btn-primary', id: 'load_panel' %>
<br/>
<br/>

<div class="row">
  <% rand = Time.now.to_i - Random.new.rand(1..Time.now.to_i) %>
  <div class="col-md-12">
    <input type="hidden" id="randValue" value="<%= rand %>" data-validate="false" data-hidden="true"/>
    <div>
      <b>File Name</b>
      <hr/>
    </div>
    <div id="application-attachments-<%= rand %>" class="col-xs-12">
      <%= render partial: 'report_attachment', locals: {application_attachments: f.object.application_attachments} %>
    </div>
  </div>
</div>


_report_attachment.html.erb

<% application_attachments.each do |attachment| %>
    <div class="fields">
        <%= render "report_attachment_fields", rep_attachment: attachment, instalment: true, type: 'application_assignment' %>
    </div>
<% end %>


_report_attachment_fields.html.erb

<div class="row attachment_display">
  <% if rep_attachment.attachment? && rep_attachment.attachment.model.share_file %>
    <% if @action == "show" && @account_type %>
      <div class="col-md-6 ellipis">
        <%= link_to File.basename(rep_attachment.attachment.path), rep.attachment.url, target: "_blank", id: 'view_file', :data => { application_attachment_id: rep_attachment.id } %>
        <%= rep_attachment.active %>
      </div>
    <% end %>
  <% end %>
</div>
在调用GET请求时,它将调用此方法

def generate_report
  @rand_value = params[:rand_value]
  @rep_application_attachment = @application.rep_attachment
  respond_to do |format|
    format.js
  end
end
这应该称为js.erb文件

generate_report.js.erb

$("#application-attachments-#{@rand_value}").html("<%= escape_javascript(render 'report_attachment', application_attachments: @rep_application_attachment) %>");
generate_report.js.erb
$(“#应用程序附件-#{@rand_value}”).html(“”);
现在的问题是,我没有得到一个错误,它说generate_report.js.erb已经呈现,但它没有呈现任何内容。我缺少什么?

您需要指定“部分”选项,以使用
render
方法渲染模板。 试试这个 生成报告.js.erb

$("#application-attachments-#{@rand_value}").html("<%= escape_javascript(render partial: 'report_attachment', application_attachments: @rep_application_attachment) %>");
$(“#应用程序附件-#{@rand_value}”).html(“”);
您的原始代码:

$("#application-attachments-#{@rand_value}").html("<%= escape_javascript(render 'report_attachment', application_attachments: @rep_application_attachment) %>");
$(“#应用程序附件-#{@rand_value}”).html(“”);
渲染部分 控制器中的部分呈现通常与Ajax调用一起使用,Ajax调用只更新页面上的一个或几个元素而不重新加载。通过从控制器呈现部分,可以在整个页面呈现(通过在模板内调用)和子页面更新(通过响应Ajax调用的控制器操作)中使用相同的部分模板。默认情况下,不使用当前布局

有关渲染的详细信息


我认为问题在于,当您需要使用ERB
”时,您试图以错误的方式插入ruby实例变量(您使用的是ruby的字符串插值语法
“{}”

这应该起作用:

$("#application-attachments-<%= @rand_value %>").html("<%= escape_javascript(render 'report_attachment', application_attachments: @rep_application_attachment) %>");
$(“#应用程序附件-”).html(“”);

解决了这个问题。这与我的ajax调用有关

$.ajax({
      type: 'GET',
      url: '/applications/generate_report?application_id='+$(this).attr('data-application-id')+'&rand_value='+$(this).attr('data-rand-value'),
      dataType: 'json',
      success: function(data) {
        object_selected.removeAttr('disabled');
      }
    })
应该是这个。通过不包括
datatype='script'
和正确的格式,即使调用了我的js.erb,也没有执行它

$.ajax({
      type: 'GET',
      url: '/applications/generate_report?application_id='+$(this).attr('data-application-id')+'&rand_value='+$(this).attr('data-rand-value'),
      data: {
        format: 'js'
      },
      dataType: 'script',
      success: function(data) {
        object_selected.removeAttr('disabled');
      }
    })

还是不行。不知怎的,它调用了js.erb,但没有填充任何内容。我甚至尝试过寻找另一个div,并尝试过像这样的smthg
$(“#new_div”).html(“testing”)
,但它仍然没有被填充。不知何故,它只是进入,但不执行js.erb文件中写入的任何内容。很奇怪。AJAX get函数不涉及任何
remote=true
,这与此有关系吗?
$.ajax({
      type: 'GET',
      url: '/applications/generate_report?application_id='+$(this).attr('data-application-id')+'&rand_value='+$(this).attr('data-rand-value'),
      data: {
        format: 'js'
      },
      dataType: 'script',
      success: function(data) {
        object_selected.removeAttr('disabled');
      }
    })