rails app - 无法使用jquery / js

时间:2017-02-21 14:47:25

标签: javascript jquery ruby-on-rails ajax

我有一个rails应用程序,我似乎无法让Div刷新。

div位于bedsheet_lines_index.html.erb

<div id="end_time_partial"  class="end_time_partial">
    <%= render :partial  => '/bedsheet_lines/end_time_partial', locals: { end_time:  3081 } %>
</div>

我正在使用弹出窗体来表示日期。 bedheet_lines_index.html.erb中的链接是

     <%= link_to( '<button>Edit end time</button>'.html_safe,

                       end_time_form_path(:id => 3081),
                       'data-popup' => true,
                       :remote => true,
                       :class => "button_class",
                       :onclick=>"window.open(this.href,'Edit end date', 'scrollbars=1,resizable=1,height=500, width=800, left=400, top=200');
                                 return false;"
              ) %><br>

end_time_form.html.erb有

<%= form_tag(controller: 'bedsheet_lines', action: 'end_time_partial_submit', method: "post", id: 3081, :remote => true)  do %>

     <%= text_field_tag(:end_time, end_time_temp, id: 'dpt')%>

  <%= submit_tag  "submit" %>

bedsheet_line_controller

  def end_time_form
     @bedsheet_line = BedsheetLine.find(3081)
     render :layout => 'alternate_style'
  end


def end_time_partial_submit
    {Non essential lines removed]
    @bedsheet_line = BedsheetLine.find(3081)
    @bedsheet_line.update_attributes(:end_time => parsed_end_time)

    respond_to do |format|   
        format.js { render :file => "bedsheet_lines/end_time_partial.js.erb" }
        format.html { render '/shared/window_closer'}
    end

end


 def end_time_partial
    @bedsheet_line = BedsheetLine.find(3081)
    render :layout => 'alternate'
 end

end_time_partial_submit.js.erb

$(document).ready(function() {
    $('#end_time_partial').html("<%= escape_javascript(render partial: 'test_partial', locals: { end_time:  $end_time  } ) %>");
    alert("BINGO2");
});

我把BINGO2的警告放在end_time_partial_submit中,看它是否到达代码的那一部分,但是没有弹出警告框

window_closer.html.erb是

<%= javascript_tag do %>

    $(document).ready(function() {
            $('#end_time_partial').html("<%= escape_javascript(render(:partial => 'bedsheet_lines/test_partial', locals: { end_time:  $end_time  } )) %>");

    });
   alert("more doughnuts");
   window.close();
<% end %>

我也在那里发出警报并且代码确实被执行了(我看到'更多甜甜圈'警报

我的主要目标是在更新日期后刷新div。

---------编辑----

当我点击提交时,div不刷新。如果我刷新页面,那么包括div在内的所有内容都会刷新。

1 个答案:

答案 0 :(得分:0)

这条线对我来说不合适......不确定它是否与您的项目完全相同。

$('#end_time_partial').html("<%= escape_javascript(render partial: 'test_partial', locals: { end_time:  $end_time  } ) %>");

如果它是精确复制品,我猜它会在服务器上引发错误500,抱怨end_time为Nil

也许你想要@end_time

我可以建议其他修改...比如使用link_to的其他形式

<%= link_to(end_time_form_path(:id => 3081),
                   'data-popup' => true,
                   :remote => true,
                   :class => "button_class",
                   :onclick=>"window.open(this.href,'Edit end date', 'scrollbars=1,resizable=1,height=500, width=800, left=400, top=200');
                             return false;"
           ) do %>
    <button>Edit end time</button>
<% end %>

这样您就不需要传递带html_safe的字符串。你可以在其中包含整个任何html块

实际上......因为你只想要一个按钮......你可以使用button_to代替link_to

但正如我所说......这些修改不会影响你的问题......唯一看起来错误的是$end_date变量......