Rails:如何将值从一个动作传递到同一控制器中的另一个动作

Mar*_*rco 3 ruby-on-rails

我从第一个动作中获取输入,如何将值传递给另一个动作?

example_controller.rb

def first
  @first_value = params[:f_name]
end

def second
  @get_value = @first_value
end
Run Code Online (Sandbox Code Playgroud)

Ste*_*zyn 5

您不能传递实例变量,因为第二个操作正在控制器的新实例中运行。但是您可以传递参数...

def first
  @first_value = params[:f_name]
  redirect_to second_action_path(passed_parameter: params[:f_name])
end

def second
  @first_value = params[:passed_parameter]
  @get_value = @first_value
end
Run Code Online (Sandbox Code Playgroud)

您还可以使用session变量,这通常是用户存储值的方式...不要存储整个对象,而仅存储键,因为会话存储通常受到限制

def first
  @first_value = params[:f_name]
  session[:passed_variable] = @first_value
end

def second
  @first_value = session[:passed_variable] 
  @get_value = @first_value
Run Code Online (Sandbox Code Playgroud)