Ruby on rails 如何每隔一个页面视图显示两个不同的部分?

Ruby on rails 如何每隔一个页面视图显示两个不同的部分?,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我使用的是cycleRails方法——主要是因为我想不出其他方法 我所做的就是在我的控制器中声明: @banner_cycle = [1,2] 在我看来,这样做: <div class="hidden-sm hidden-xs text-center"> <% @banner_cycle.each do |x| %> <%= cycle(render "shared/banner_728x90", render "shared/banner

我使用的是
cycle
Rails方法——主要是因为我想不出其他方法

我所做的就是在我的控制器中声明:

@banner_cycle = [1,2]
在我看来,这样做:

<div class="hidden-sm hidden-xs text-center">
    <% @banner_cycle.each do |x| %>
        <%= cycle(render "shared/banner_728x90", render "shared/banner_970x250") %>
    <% end %>               
</div>

除非它被更改或我忘记了
循环
在页面视图中不起作用。它仅适用于当前视图/页面加载。如果你真的想改变页面视图,你必须在服务器的某个地方保持状态。或者,如果您对每个用户都满意,您可以在会话中跟踪它。比如说

在控制器操作中:

session[:banner_cycle] = session[:banner_cycle].to_i + 1
.to_i
是为了防止零

在你看来:

<div class="hidden-sm hidden-xs text-center">
    <% if session[:banner_cycle].even? %>
        <%= render "shared/banner_728x90" %>
    <% else %>
        <%= render "shared/banner_970x250" %>
    <% end %>               
</div>


我想一个激进的用户可能会溢出最大整数值,但我不担心这一点。

我想发生的是,每当用户登录(或只是访问而没有登录),当他们第一次点击页面时,他们会看到
横幅a
,当他们刷新或转到另一个页面并返回时,会显示
横幅B
。我刚刚尝试过这种方法,它总是显示出
横幅A
。你把控制器代码放在哪里了?添加日志以查看是否正在调用它以及值是什么。实际上……不……你是对的。我必须更新我的部分文档的内容。我明白了,这基本上就是不断增加会话的
banner\u周期
banner,直到会话过期?
<div class="hidden-sm hidden-xs text-center">
    <% if session[:banner_cycle].even? %>
        <%= render "shared/banner_728x90" %>
    <% else %>
        <%= render "shared/banner_970x250" %>
    <% end %>               
</div>