Joh*_*ker 8 model-view-controller controller ruby-on-rails
我一直试图把我的头脑放在render_to,但我没有取得多大成功.
基本上我有控制器方法:
def first
#I want to get the value of VAR1 here
end
def second
VAR1 = ["Hello", "Goodbye"]
render_to ??
end
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚的是如何实现这一目标.最初我只是想渲染first.html.erb文件,但这似乎也没有用.
谢谢
编辑:我很欣赏我收到的答案,但是他们都倾向于避免使用render方法或redirect_to.基本上情况是你不能将变量从控制器传递给控制器吗?我不得不认为有一些方法,但我似乎无法找到它.
rya*_*anb 23
将对象分配给常量不是一个好主意.确实,这是在全球空间,但它对每个人都是全局的,因此任何其他用户转到此请求都将获得此对象.有一些解决方案.
我假设你有一个你正在经历的多步形式.在这种情况下,您可以将设置属性作为隐藏字段传递.
<%= f.hidden_field :name %>
Run Code Online (Sandbox Code Playgroud)
如果有很多字段,这可能很乏味,因此您可能希望循环使用params[...]hash或column_names方法来确定要传递的属性.
或者,您可以在会话中存储属性.
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
Run Code Online (Sandbox Code Playgroud)
第三,正如Paul Keeble所提到的,您可以将模型保存到数据库中,但将其标记为不完整.您可能希望使用状态机.
最后,您可能需要查看Acts As Wizard插件.