Rails: доступ к файлам cookie в классе в качестве помощника - PullRequest
0 голосов
/ 17 марта 2019

У меня есть класс ruby ​​во вспомогательном рельсе и внутри этого класса. Я не могу получить доступ к методу cookie ActiveController. Я посмотрел на этот вопрос , и он не решил мою проблему, и я не делаю то, что этот парень, так как мой класс ruby ​​находится в области видимости контроллера и вызывается им только когда-либо. Какой лучший способ избавиться от

NameError (undefined local variable or method `cookies` for #<CartHelper::CartObject:...>):

app/helpers/cart_helper.rb:##:in `save`
app/helpers/cart_helper.rb:##:in `add_product`
app/controllers/cart_controller.rb:##:in `add`

в моем помощнике? (Я также открыт для предложений о том, как сделать этот подход более подходящим для Ruby-y)

module CartHelper
  class CartObject
    def load (cart)
      # converts from json
    end
    private def save
      cookies.signed.permanent[:cart] = dump
    end
    private def dump
      # converts to json
    end

    def add_product (product)
      # ...
      save
    end
    def remove_product (product)
      # ...
      save
    end
  end
  def get_cart
    return CartObject.new if cookies.signed.permanent[:cart].nil?
    CartObject.load(cookies.signed.permanent[:cart])
  end
end

и CartHelper включены в контроллер приложения курса

class CartController < ApplicationController\
  skip_before_action :verify_authenticity_token, only: [:add]
  def view
    cart = get_cart
    @products = cart.products
  end
  def add # only by ajax
    cart = get_cart
    cart.add_product(Oj.strict_load(params[:product]))
    head 200
  end
  def remove
    cart = get_cart
    cart.remove_product(params['rem'])
    flash['success'] = 'Product removed.'
    redirect_to '/cart'
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...