我有一个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在内的所有内容都会刷新。
答案 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
变量......