如何解决Ajax更新Ruby on Rails 6后,Semantic-UI Modal将不会重新打开
当我使用AJAX更新记录的表行时。我无法重新打开语义UI的模式,但是在更新记录之前单击打开模式按钮时,这样做没有问题。有人经历过吗?在Rails中进行AJAX更新后,如何获取模式以重新初始化?奇怪的是,按钮的id仍然设置,只是在更新记录后没有打开模式。
chart_records_controller.rb
def update
respond_to |format|
if @chart_record.update(chart_record_params)
format.js {}
else
format.js {}
end
end
update.js.erb
document.getElementById('<%= dom_id(@chart_record,'inline_form') %>').remove()
document.getElementById('<%= dom_id(@chart_record,'inline_form') %>').innerHTML = "<%= j render @chart_record %>"
document.getElementById('<%= dom_id(@chart_record,'inline_form') %>').style.display = 'table-row'
_chart_record.html.erb
<div class="divTableCell"><%= link_to chart_record.date %></div>
<div class="divTableCell"><%= link_to chart_record.username %></div>
<div class="divTableCell">
<button class="ui icon button" id="chart_record_comment_btn_<%= chart_record.id">
</button>
<div class="ui modal chart_record_comment_modal_<%= chart_record.id %>">
<i class="close icon"></i>
<div class="p-3">
<%= simple_form_for(chart_record,url: update_comment_for_chart_record(id: chart_record.id),method: :post,remote: true) do |f| %>
<%= f.input :comment_body,as: :text,label: "Comment" %>
<%= f.submit 'Update Comment',class: 'ui button' %>
<% end %>
</div>
</div>
</div>
<script>
// only works before record is updated inline.
$('#chart_record_btn_<%= chart_record.id' %>').click(function() {
$('ui.modal.chart_record_comment_modal_<%= chart_record.id %>').modal('show')
});
</script>
解决方法
我只是使用按钮本身的onclick参数调用了模式。我认为更新迫使DOM进入未就绪状态。似乎很黑,但是没有其他方法可以让JS重新初始化模式。
<button type="button" onclick="$('ui.modal.chart_record_comment_modal_<%= chart_record.id %>').modal('show')"><i class="icon comment outline"></i></button>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。