0

我的控制器中有两个操作:搜索、show_db。

说,它们看起来像这样:

def search
   @uploads=current_user.uploads    
end

def show_db
end

我需要将参数(@uploads)从search-action 传递到show_db-action。(我知道我可以写@uploads=current_user.uploadsshow_db但我不能,它要复杂得多。)像这样的 smt:

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

def show_db(list)
   blablabla
end

有可能吗?=)

提前谢谢了。

4

3 回答 3

0

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

def show_db(list)
  x = list
  list.do_somethings
  etc
end
于 2013-03-24T00:12:50.100 回答
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 只是一个方法,而不是控制器动作。

于 2013-03-24T03:31:31.467 回答
0

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

于 2013-03-24T15:54:12.360 回答