问题描述
我有一个按钮,它使用 Javascript 将 完整的布尔值从真切换为假,反之亦然。
我希望将内部文本更改为 更改...,因为它从一种状态变为另一种状态。
我已将 sleep 添加到控制器中的方法中,并尝试添加 data: { disable_with: "changing..."}
但这会在完成时中断文本更改。
有没有人有解决方案?
meetings_controller.rb
def completed
sleep 1
@meeting.toggle!(:complete)
end
index.rb
中的链接<div id="meeting-<%= meeting.id %>">
<%= link_to "#{ meeting.complete ? 'Already completed' : 'Mark as complete' }",completed_meeting_path(meeting),method: :patch,remote: :true,class: "btn btn-#{ meeting.complete ? 'success' : 'warning' }" %>
</div>
completed.js.erb
<% if @meeting.complete == true %>
$("#meeting-<%= @meeting.id %> a").html('Already completed').removeClass('btn-warning').addClass('btn-success');
<% else %>
$("#meeting-<%= @meeting.id %> a").html('Mark as complete').removeClass('btn-success').addClass('btn-warning');
<% end %>
解决方法
您可以向按钮添加 click event:
// some_file.js
$("#meeting_container").on("click","a",function(e) {
$(e.target).html("changing...").prop("disabled",true);
});
// Example code,may need to tweak a bit