刷新后退按钮上的所有信息按:Ruby on Rails

时间:2016-03-23 20:27:10

标签: javascript jquery ruby-on-rails fullcalendar

我的RoR网站使用fullcalendar gem实现日历。每个用户都有一个日历,显示他或她正在参加的事件。以下方案为我的问题设定了阶段:

  1. 用户Alice点击她日历上的活动,该活动将导致活动的show页面。
  2. Alice点击活动show page
  3. 上的“无人参加活动”按钮
  4. Alice点击后退按钮。
  5. 她刚刚无人看管的事件仍列在她的日历上。
  6. 如何让浏览器刷新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 }) %>");
    

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

原因是你正在按下后退按钮,页面将带你到你所在的最后一页,恢复你离开时的状态。点击后退按钮不会强制页面重新加载&#34;。你可以配置&#34;返回&#34;按钮并强制它发出重定向或渲染您想要去的页面(必要时传递参数)。

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

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

祝你好运!