【问题标题】:Refresh All Information On Back Button Press: Ruby on Rails按下后退按钮刷新所有信息:Ruby on Rails
【发布时间】:2016-03-23 20:27:10
【问题描述】:

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

  1. 用户 Alice 在她的日历上单击了一个事件,这会转到该事件的 show 页面。
  2. Alice 单击事件show page 上的“无人参与事件”按钮
  3. Alice 单击了返回按钮。
  4. 她刚刚未参加的活动仍列在她的日历上。

如何让浏览器刷新 Alice 的活动信息,以便在按下返回按钮时只显示她当前正在参加的活动?

我搜索了 Stack Overflow 并没有找到可行的解决方案。如此处How to prevent browser page caching in Rails 所见的缓存清除不起作用。我什至不确定这是一个缓存问题。也许有一些javascript会强制重新加载信息?非常感谢任何解决方案。谢谢!

回应@ElliottRoche:

在视图中点击参加按钮,触发参加动作:

<%= 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

使用attend.js.erb,使用UJS 更新与会者列表:

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

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

【问题讨论】:

  • 可能是fullcalendar 缓存问题吗?因为如果事件真的是“无人参与”,那么这肯定看起来像一个缓存问题。
  • 如果你点击重新加载它会改变吗?我知道如果不使用一些javascript或其他东西,回击不会显示“更新”的日历,但是在点击重新加载按钮后会发生什么(回击后)?
  • 我的网站上与完整日历无关的其他区域也遇到过这个问题。基本上,在使用 Javascript 更新页面(如添加与会者)后按下后退按钮时,新显示的页面上的信息不是最新的。我也试过Rails.cache.clear,但这没有用。也许这是一个turbolinks 问题。有什么需要帮助的想法吗?
  • @OscarValdezEsquea 当我点击重新加载时页面会更新。
  • 是否有 Rails 控制器正在执行更新?如果是这样,它会做任何类型的重定向吗?

标签: javascript jquery ruby-on-rails fullcalendar


【解决方案1】:

尝试在响应块中添加format.html { redirect_to(@event) }

【讨论】:

    【解决方案2】:

    原因是您正在点击后退按钮,页面将您带到您所在的最后一页,恢复您离开时的状态。点击后退按钮不会强制页面“重新加载”。您可以配置“后退”按钮并强制它发出重定向或呈现您想要访问的页面(如有必要,传递参数)。

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

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

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多