优雅的方式只传递rails redirect_to中的非null参数
我们如何在rails redirect_to方法中仅传递非null参数?
我知道我们可以通过以下方式将参数传递给redirect_to:
redirect_to :action => "action1", :foo => bar
当变量’bar’可能为零或空时,是否有任何优雅/更好的方法来传递它?
现在,我在执行redirect_to之前检查bar是否为空。 但我觉得这可以用更优雅的方式完成。
if bar.blank? redirect_to :action => "action1" else redirect_to :action => "action1", :foo => bar end
使用可选参数创建路由
get '/action1/(:foo)' => 'controller#action1'
然后像使用它一样
redirect_to :action => "action1"
要么
redirect_to :action => "action1", :foo => bar
欲了解更多信息,请访问http://guides.rubyonrails.org/routing.html#bound-parameters
这里没有非常好的选择,但也许其中一个将有助于激发一个想法:
args = { :action => "action1" } args[:foo] = bar unless bar.blank? redirect_to args
redirect_to { :action => "action1" }.tap do |args| args[:foo] = bar unless bar.blank? end
redirect_to { :action => "action1" }.merge!(bar.blank? ? {} : { :foo => bar })
尝试:
redirect_to :action => "action1", bar.blank? ? {} : :foo => bar