我一直在努力使render_to成为现实,但是我并没有取得太大的成功。
本质上,我有 Controller 方法:
def first
#I want to get the value of VAR1 here
end
def second
VAR1 = ["Hello", "Goodbye"]
render_to ??
end
我不知道该怎么做。最初,我只想呈现first.html.erb文件,但这似乎也不起作用。
谢谢
编辑:我很感激我收到的答案,但是所有这些都倾向于避免使用render方法或redirect_to。基本上,您不能在 Controller 之间传递变量吗?我必须认为有某种方法,但我似乎找不到。
最佳答案
将对象分配给常量不是一个好主意。的确,这是在全局范围内,但对于每个人来说都是全局范围,因此任何其他访问此请求的用户都将获得此对象。有一些解决方案。
我假设您要完成一个多步骤表单。在这种情况下,您可以将设置的属性作为隐藏字段传递。
<%= f.hidden_field :name %>
如果有很多字段,这可能很繁琐,因此您可能需要遍历
params[...]
哈希或column_names方法来确定要传递的属性。或者,您可以将属性存储在session中。
def first
@item = Item.new(params[:item])
session[:item_attributes] = @item.attributes
end
def second
@item = Item.new(session[:item_attributes])
@item.attributes = params[:item]
end
第三,如Paul Keeble所述,您可以将模型保存到数据库中,但将其标记为不完整。您可能要为此使用state machine。
最后,您可能想看看Acts As Wizard plugin。
关于ruby-on-rails - 如何通过 rails 将对象从一个 Controller 传递到另一个 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1286522/