gpt4 book ai didi

ruby-on-rails - 如何在 rails 服务对象中显示 flash 消息

转载 作者:行者123 更新时间:2023-12-04 02:48:32 25 4
gpt4 key购买 nike

我想将服务对象添加到我的 Controller 中。是否有机会将 flash 消息包含到该服务对象中?

user_stocks_controller

class UserStocksController < ApplicationController
def create
@user_stock = UserStocksCreator.new(current_user, params).call
redirect_to my_portfolio_path
end
end

服务对象user_stocks_creator

class UserStocksCreator
def initialize(current_user, params)
@current_user = current_user
@params = params[:stock_ticker]
end

def call
stock = Stock.find_by_ticker(params)
if stock.blank?
stock = Stock.new_from_lookup(params)
stock.save
end
@user_stock = UserStock.create(user: current_user, stock: stock)
flash[:success] = "Stock #{@user_stock.stock.name} was successfully added to portfolio"
end

private

attr_accessor :current_user, :params
end

使用这段代码我有一个错误:

undefined local variable or method `flash'

最佳答案

flash 方法仅在 Controller 中可用。当你想在服务对象中设置 flash 时,你需要将 flash 传递给服务对象。

# in the controller
def create
@user_stock = UserStocksCreator.new(current_user, params, flash).call
redirect_to my_portfolio_path
end

# in the service
class UserStocksCreator
def initialize(current_user, params, flash)
@current_user = current_user
@params = params[:stock_ticker]
@flash = flash
end

def call
# unchanged...
end

private

attr_accessor :current_user, :params, :flash
end

关于ruby-on-rails - 如何在 rails 服务对象中显示 flash 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56137245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com