Ruby on rails 静态页面是否应该访问rails controller和routes.rb中的Cookie?

Ruby on rails 静态页面是否应该访问rails controller和routes.rb中的Cookie?,ruby-on-rails,routes,Ruby On Rails,Routes,我确信这是一个明显的问题,但我不明白为什么这不起作用 我发现routes.rb文件中定义的静态页面似乎无法访问cookie?对吗?我试图读取cookie的值,但下面的页面似乎返回空对象 My routes.rb包含以下内容: scope controller: :static do get :about get :terms get :privacy get :cookies get :returns get :delivery end 为了完整起见,这里是静态控制器:

我确信这是一个明显的问题,但我不明白为什么这不起作用

我发现
routes.rb
文件中定义的静态页面似乎无法访问cookie?对吗?我试图读取cookie的值,但下面的页面似乎返回空对象

My routes.rb包含以下内容:

scope controller: :static do
  get :about
  get :terms
  get :privacy
  get :cookies
  get :returns
  get :delivery
end
为了完整起见,这里是
静态控制器

# frozen_string_literal: true

class StaticController < ApplicationController
  before_action :find_order

  def index; end

  def about; end

  def pricing
    redirect_to root_path, alert: t('.no_plans') unless Plan.without_free.exists?
  end

  def terms; end

  def privacy; end

  def cookies; end

  def returns; end

  def delivery; end
end
def find_order
  @order = if current_user
             Order.where(
               user: current_user,
               basket: true
             ).first
           else
             if cookies.dig[:ordernum]
               Order.where(
                 ordernum: cookies[:ordernum],
                 basket: true
               ).first
             end
           end
end
helper_method :find_order
我必须添加对
cookies
的检查,然后添加
if cookies[:ordernum]
以防止它在静态页面上失败

谢谢你在这方面的帮助


如果有人觉得上面的代码可以更好。。。请让我知道!必须有更好的方法来实现这一点。感觉有点笨重。

不相关,但你可以做
if cookies.dig[:ordernum]
而不是两个
if
statementsThanks@Eyeslandic。非常感谢。只需检查一下:static_controller.rb是从应用程序控制器继承的吗?我99.9%确定我检查过它是从应用程序控制器继承的@JohnAthaydeTo Rails“静态页面”和任何其他控制器/路由之间绝对没有区别。所以答案是肯定的,这应该有效。你是如何设置cookie的?你是如何测试这一点的?不相关,但你可以做
if cookies.dig[:ordernum]
而不是两个
if
语句hanks@Eyeslandic。非常感谢。只需检查一下:static_controller.rb是从应用程序控制器继承的吗?我99.9%确定我检查过它是从应用程序控制器继承的@JohnAthaydeTo Rails“静态页面”和任何其他控制器/路由之间绝对没有区别。所以答案是肯定的,这应该有效。你是如何设置cookie的?如何测试这一点?
def find_order
  @order = if current_user
             Order.where(
               user: current_user,
               basket: true
             ).first
           else
             if cookies.dig[:ordernum]
               Order.where(
                 ordernum: cookies[:ordernum],
                 basket: true
               ).first
             end
           end
end
helper_method :find_order