我的控制器中有两个动作: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
可以吗?=)
非常感谢提前。
答案 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了解如何使用会话。