导轨,将参数从控制器传递到服务

问题描述

路轨。 在视图中,我有一个提交按钮。在控制器中,我想使用输入(数组)并将其传递给服务。

在控制器中,我尝试过:

class TestDemandController < ApplicationController
  
  def index
  end

  def create
    test_demand = TestDemandService.new(@params)
    test_demand.build(@params)
  end

在服务中:

class TestDemandService

  def initialize(input)
    @input = input
  end

  def build(input)
     ..loop over an array..
  end

我在“循环遍历数组”这一行有此错误: nil:NilClass的未定义方法“ each”

谢谢

解决方法

在控制器中,您可以访问参数(通过表单发布到服务器上的参数)。您也可以在终端中检查参数,它们看起来像: Started POST ...... Parameters: {"key" => "value","another_key" => "Another value"}

要将完整的参数发送到服务,可以向其传递参数:

  def create
    test_demand = TestDemandService.new(params)
    ...
  end

如果您只想从参数中发送特定值,则可以执行以下操作:

  def create
    test_demand = TestDemandService.new(params[:another_key])
    ...
  end

这将为您提供服务中的值another_value