在没有重新加载整个页面的情况下在js.erb中渲染rails部分

时间:2017-09-28 03:34:50

标签: javascript jquery ruby-on-rails ruby-on-rails-4 renderpartial

我的页面中有一部分在加载页面时被加载。部分在加载时被调用。

<%= f.simple_fields_for :application_attachments do |attachment| %>
        <%= render "attachment_fields", {:f => attachment, :instalment => true, :type => 'application_assignment'} %>
      <% end %>

然后我运行一些更改application_attachments关联值的函数,我需要重新加载该部分并呈现最新信息。

我更新值的方法有一个js.erb文件我尝试更新并渲染部分像这样

generate_attachment.js.erb

    <% form_for @application do |f| %>
        <%= f.fields_for :application_attachments do |attachment| %>
            $("<%= escape_javascript render(partial: 'attachment_fields', locals: {f: attachment}, :instalment => true, :type => 'application_assignment') %>")
                .appendTo($("#application-attachments-#{@rand_value}"));
        <% end %>
    <% end %>

基本上我只是想重新渲染渲染部分的部分并更新值,但它不起作用。

我不知道还能做什么,或者如何使用最新的html部分更新所需的div。任何建议或选择赞赏

1 个答案:

答案 0 :(得分:0)

试试这个:

1-为此做出部分:( _custom_partial.html.erb)

<%= f.simple_fields_for :fields_for_param do |attachment| %>
  <%= render "attachment_fields", {:f => attachment, :instalment =>
 true, :type => 'application_assignment'} %> 
<% end %>

2页结构应该是这样的:

<% form_for @application do |f| %>
 <div id="my_id">
  <%= render partial: 'custom_partial', locals: {fields_for_param: 
   application_attachments}%>
 </div>
<% end %>

3-在js.erb文件中仅重新加载my_id div,其中包含可更改的内容,如

$('#my_id').html('<%= j render 'custom_partial', locals: {fields_for_param: your_changebale_variable}%>');

您可以根据自己修改此代码。希望这会奏效。 thnaks。