优雅的方式只传递rails redirect_to中的非null参数

Cod*_*ast 1 ruby-on-rails

我们如何在rails redirect_to方法中仅传递非null参数?

我知道我们可以通过以下方式将参数传递给redirect_to:

redirect_to :action => "action1", :foo => bar
Run Code Online (Sandbox Code Playgroud)

有没有优雅/更好的方法来传递变量'bar',当它可能是零或空?

现在,我在执行redirect_to之前检查bar是否为空.但我觉得这可以用更优雅的方式完成.

if bar.blank?
    redirect_to :action => "action1"
else
    redirect_to :action => "action1", :foo => bar
end
Run Code Online (Sandbox Code Playgroud)

Rav*_*iya 5

使用可选参数创建路由

get '/action1/(:foo)' => 'controller#action1'
Run Code Online (Sandbox Code Playgroud)

然后像使用它一样

redirect_to :action => "action1"
Run Code Online (Sandbox Code Playgroud)

要么

redirect_to :action => "action1", :foo => bar
Run Code Online (Sandbox Code Playgroud)

了解更多信息http://guides.rubyonrails.org/routing.html#bound-parameters