刷新所有信息返回按钮按下:RubyonRails



My RoR网站使用fullcalendar gem实现日历。每个用户都有一个日历,显示他或她正在参加的活动。以下场景为我的问题奠定了基础:

  1. 用户Alice单击日历上的某个事件,该事件将指向该事件的show页面
  2. Alice单击事件的show page上的"无人参与事件"按钮
  3. 爱丽丝点击后退按钮
  4. 她刚刚没人管的事情仍然列在她的日程表上

当按下后退按钮时,我如何让浏览器刷新Alice的事件信息,以便只显示她当前正在参加的事件?

我搜索了Stack Overflow,但没有找到一个有效的解决方案。缓存清除,如图所示如何防止Rails中的浏览器页面缓存不起作用。我甚至不确定这是缓存问题。也许有一些javascript会强制重新加载信息?我们非常感谢任何解决方案。谢谢

回复@ElliotRoche:

在视图中单击参与按钮,触发参与操作:

<%= button_to button_text, attend_event_path(@event), :remote => true,  :id => "attend" %>

出席操作将与会者从与会者列表中添加/删除,如下所示:

 def attend
    @event = Event.find(params[:id])
    @attendee = User.find(session[:user_id])
    if @event.users.exclude?(@attendee)
      @event.users << @attendee
      @event.save
    else
      @event.users.delete(@attendee)
    end
    @attendees = @event.users

    respond_to do |format|
      format.js
      format.html {  }
      format.json { }
    end
end

使用attender.js.erb,与会者列表将使用UJS:进行更新

$('#attendees-list').html("<%= j render(:partial => 'attendees_list', :locals => { :attendees => @attendees }) %>");

从这里开始,当按下后退按钮时,不会反映用户已参加/未参与事件的事实。

尝试在response-to块中添加format.html { redirect_to(@event) }

原因是您正在点击后退按钮,页面将带您进入上一页,恢复您离开时的状态。点击后退按钮不会强制页面"重新加载"。您可以配置"返回"按钮,并强制它对您要访问的页面进行重定向或呈现(必要时传递参数)。

HTML5中引入了一些新方法。它可能会有帮助,也可能会解决你的问题,但我不能保证它会,因为我自己没有尝试过。

https://css-tricks.com/using-the-html5-history-api/

祝你好运!

相关内容

  • 没有找到相关文章

最新更新