我们如何在rails redirect_to方法中仅传递非null参数?
我知道我们可以通过以下方式将参数传递给redirect_to:
redirect_to :action => "action1", :foo => bar
是否有任何优雅/更好的方式来传递变量' bar'什么时候可能是零或空?
现在,我在检查redirect_to之前是否为空。但我觉得这可以用更优雅的方式完成。
if bar.blank?
redirect_to :action => "action1"
else
redirect_to :action => "action1", :foo => bar
end
答案 0 :(得分:5)
创建带有可选参数的路线
get '/action1/(:foo)' => 'controller#action1'
然后像
一样使用它redirect_to :action => "action1"
或
redirect_to :action => "action1", :foo => bar
了解更多信息http://guides.rubyonrails.org/routing.html#bound-parameters
答案 1 :(得分:1)
这里没有很好的选择,但也许其中一个可以激发一个想法:
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 })
答案 2 :(得分:0)
尝试:
redirect_to :action => "action1", bar.blank? ? {} : :foo => bar