代码之家  ›  专栏  ›  技术社区  ›  Stan

Rails交互器:我怎么能有flash消息?

  •  1
  • Stan  · 技术社区  · 10 年前

    我正在与互动器宝石中的一个小功能(来自Collective idea的朋友)进行斗争。

    我想做的是在我的互动器中显示一条闪光消息,就像我在控制器中显示的一样。

    这是我在控制器中的创建方法,在这里我实例化了我的交互器:

    def create
        buy_credits = BuyCredit.new(send_transactions_params)
        buy_credits.perform
    
        redirect_to profile_path
    end
    

    下面是我的互动器的构建:

    def build_transaction
    
        if context[:transaction][:recipient_id].nil? && context[:transaction][:recipient_type].nil?
    
          @transaction = user.transactions.build(context[:transaction])
          # flash[:success] = I18n.t('.bought_credits_for_client', recipient: user)
    
        elsif context[:transaction][:recipient_id].present? && context[:transaction][:recipient_type] == Organisation.name
    
          current_organisation = user.organisations.find(context[:transaction][:recipient_id])
          @transaction = current_organisation.transactions.build(context[:transaction])
          # flash[:success] = I18n.t('.bought_credits_for_organisation', recipient: current_organisation)
    
        else
          # flash[:error] = I18n.t('.cant_buy_credits')
        end
    
      end
    

    你可以看到我想要的快闪消息类型,它们是注释行。

    当然,我可以吃点类似的

    if interactor.success?
        redirect_to profile_path
    else
    

    在我的控制器中,但正如你在我的评论行中看到的,我有两种“类型”的成功。。。

    谢谢

    1 回复  |  直到 10 年前
        1
  •  1
  •   Stan    10 年前

    由于另一位同事的帮助,我们成功地找到了一个解决方法:我们只需将flash对象(在控制器中实例化)传递给上下文,交互器就会接收到该上下文。因此,交互器将其消息添加到对象,该对象随后在控制器中可用。

    以下是我的上下文结构:

    def send_transactions_params
        params_to_send = {
            transaction: transaction_params,
            buyer: current_user,
            flash: flash
        }
        params_to_send
    end