我使用Ruby on Rails和Bootstrap。
模态如下。
index.html.erb
<div class="modal fade" id="join_to_room" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Enter room</h4>
</div>
<div class="modal-body">
<p>Do you join this room?</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<%= link_to 'Yes', {:action => "join_to_room", :rid => room.id}, :class => "btn btn-primary",:id => "modal_yes", :role => "button", :remote => true, data: { disable_with: 'Sending ...' } %>
</div>
</div>
</div>
</div>
当用户点击“是”按钮并进入房间时,他的self.join_id
会更新为房间的ID并重新加载页面。
user.rb
def join_to_room
current_user.update_attribute :join_id, params[:rid]
redirect_to '/'
end
top.js.coffee
$ ->
$("#modal_yes").click ->
location.reload()
如果self.join_id
在访问index.html页面时不是nil,则会转到room的show.html.erb。因此,点击“是”的用户应该立即进入房间。
user.rb
def enter?
if self.join_id
return self.join_id
else
return nil
end
end
top_controller.rb
def index
if current_user && current_user.enter?
redirect_to Room.find(current_user.join_id)
end
end
但是,页面没有重新加载,用户最初没有进入房间,重新启动服务器后,它运行良好。
为什么呢?我该怎么办?