如果条件满足则清除params Rails 4

时间:2015-04-06 23:59:27

标签: ruby ruby-on-rails-4 activerecord

我无法弄清楚这一点,似乎没有直接讨论我能找到的任何地方。这是我的问题:如何重置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>

1 个答案:

答案 0 :(得分:1)

您应该将用户重定向到他可以重新开始的页面,而不是操纵params哈希。

用以下内容替换此行render 'new'

redirect_to new_airlines_path, alert: 'Please start over...'