Ruby on rails,将一个参数从一个动作传递给另一个动作

时间:2013-03-23 23:16:40

标签: ruby-on-rails

我的控制器中有两个动作:search,show_db。

说,他们看起来像这样:

def search
   @uploads=current_user.uploads    
end

def show_db
end

我需要将参数(@uploads)从search - 动作传递给show_db - 动作。 (我知道我可以在@uploads=current_user.uploads中写show_db,但我不能,这要复杂得多。) 像这样:“

def search
       @uploads=current_user.uploads
       show_db(@uploads)    
end

def show_db(list)
   blablabla
end

可以吗?=)

非常感谢提前。

3 个答案:

答案 0 :(得分:0)

如果你想将一个方法的结果传递给另一个方法,那么在Ruby中非常简单,你的第二个代码块应该可以工作,你只需要使用方法中参数的list变量

def show_db(list)
  x = list
  list.do_somethings
  etc
end

答案 1 :(得分:0)

创建第三个知道如何创建@uploads的方法,从两个动作中使用它。

此外,如果在索引操作中要使用@uploads变量渲染show_db,则可以执行以下操作:

def search
  @uploads=current_user.uploads
  if something
    return show_db(@uploads)
  end
end

def show_db(list)
  blah
  render 'show_db'
end

但在这种情况下,show_db只是一个方法,而不是控制器动作。

答案 2 :(得分:0)

您可能希望跨操作使用变量。您应该知道,每次从浏览器发出请求时,您都在创建一个新的控制器实例。因此,您的变量将无法正常工作,因为您实际上将尝试跨实例访问实例变量。一项不可能的任务 我建议使用会话来存储多个请求中的信息。 Google了解如何使用会话。