Ruby on rails RubyonRails:如何调用具有另一个操作的参数的操作

Ruby on rails RubyonRails:如何调用具有另一个操作的参数的操作,ruby-on-rails,Ruby On Rails,所以我想这样做: save_to_library(params) if params[:commit] == "lib" 但save_to_库显然不接受任何参数 如果操作不接受参数,如何获取参数 (我知道当我直接链接到它时,这个动作就起作用了……只是试图简化可用性)您的控制器处理参数,并通过accesor方法使它们对您可用,它们可供整个控制器使用,而无需在方法参数中传递。控制器处理参数并通过accesor方法使其可供您使用,它们可供整个控制器使用,而无需在方法参数中传递。参数是一个全局散列,假

所以我想这样做:

save_to_library(params) if params[:commit] == "lib"
但save_to_库显然不接受任何参数

如果操作不接受参数,如何获取参数


(我知道当我直接链接到它时,这个动作就起作用了……只是试图简化可用性)

您的控制器处理参数,并通过accesor方法使它们对您可用,它们可供整个控制器使用,而无需在方法参数中传递。

控制器处理参数并通过accesor方法使其可供您使用,它们可供整个控制器使用,而无需在方法参数中传递。

参数是一个全局散列,假设它是在方法之外定义的:

params = {:commit => "lib"}

def save_to_library
  @var = params[:commit]
  # etc..
end
如果要执行某些条件操作,可以执行以下操作:

def update
  save_to_library if params[:commit] == "lib"
end

def save_to_library
  @var = params[:commit]   # @var = "lib"
  # etc..
end

它应该可以正常工作。

params是一个全局散列,想象一下它是在方法之外定义的:

params = {:commit => "lib"}

def save_to_library
  @var = params[:commit]
  # etc..
end
如果要执行某些条件操作,可以执行以下操作:

def update
  save_to_library if params[:commit] == "lib"
end

def save_to_library
  @var = params[:commit]   # @var = "lib"
  # etc..
end

它应该可以正常工作。

不是一个真正的全局变量,否则它的名字开头会有一个$,它是一个封装在访问器方法中的实例变量,这就是为什么你可以在没有@的情况下访问它。是的,我应该在这里澄清;它在控制器的作用域内,因此所有操作都可以访问它,而无需传递它。它不是一个真正的全局变量,否则它的名称开头会有一个$,它是一个封装在访问器方法中的实例变量,这就是为什么您可以访问它而不需要@。是的,我应该在这里澄清;它在控制器的范围内,因此所有操作都可以访问它,而无需传递它。