我无法弄清楚这一点,似乎没有直接讨论我能找到的任何地方。这是我的问题:如何重置params以使params散列为空我呈现'new'?
a = ['United', '1769']
Airline.all.each do |z|
if z.carrier == a[0] && z.flight == a[1]
#DO SOME STUFF
elsif z.carrier != a[0] || z.flight != a[1]
#CLEAR PARAMS HERE/DELETE CURRENT INSTANCE
render 'new'
end
end
我想迭代Airline并与先前存储的用户输入的数组'a'进行比较,以确保它们匹配。如果阵列中的一个或两个对象与航空公司中的任何东西都不匹配,我基本上想告诉用户“嘿,那不存在,我们会让你开始。”渲染'new'将它发送到新的控制器动作就好了,但它保留了之前为相关对象设置的参数。
那么如何说“如果航空公司中的一件或两件事与用户输入不匹配,请清除params散列,然后将其发送到控制器中的'new'动作”?理想情况下,我想这样做而不告诉它破坏当前的对象实例(或者最后 - 它似乎实际上是相同的东西),因为它可以工作,但是当我渲染'new'时会导致冻结哈希。 / p>
答案 0 :(得分:1)
您应该将用户重定向到他可以重新开始的页面,而不是操纵params哈希。
用以下内容替换此行render 'new'
:
redirect_to new_airlines_path, alert: 'Please start over...'