向rails app

时间:2016-04-17 23:06:39

标签: ruby-on-rails ruby

我想要一个内容显示给第一次使用rails应用程序的访问者,所以我编写了一个帮助方法来检查会话并存储cookie。

我的控制器设置如下:

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  helper_method :first_time_visiting?

  def first_time_visiting?
    if session[:first_time].nil?
        cookies.permanent[:first_time] = 1
    end
  end
end

class ItemsController < ApplicationController
  before_action :first_time_visiting?
end

然后我在我的视图中调用这个方法:

<% if first_time_visiting? %>
  <div class="new-visitor-show">Test</div>
<% end %>

第一次访问后我不应该看到“测试”,但我是。我是否错误地使用了辅助方法?

2 个答案:

答案 0 :(得分:5)

你可以使用它(没有助手):

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  before_action :first_time_visit, unless: -> { cookies[:first_visit] }

  def first_time_visit
     cookies.permanent[:first_visit] = 1
     @first_visit = true
  end
end

函数first_time_visit只会被调用一次,因此在视图中:

<% if @first_visit %>
  <div class="new-visitor-show">Test</div>
<% end %>

答案 1 :(得分:0)

我认为您应该检查cookies而不是session

  def first_time_visiting?
    if cookies[:first_time].nil?
      cookies.permanent[:first_time] = true
      true
    else
      false
    end
  end