Rails 5 - 在link_to中,如何传递一个nil(NULL)参数?

use*_*621 5 ruby parameters routes ruby-on-rails link-to

我有一个链接,我需要传递一系列参数,其中2个参数始终是nill.

link_to go_to_action_path(id, par_01, par_02, par_03, par_04)
Run Code Online (Sandbox Code Playgroud)

在某些情况下是par_01par_02 nil在其他par_03par_04.

如果我在变量中有这些值:

par_01 = nil
par_02 = nil
par_03 = 'a'
par_04 = 'b'
Run Code Online (Sandbox Code Playgroud)

然后在go_to_action行动中:

p01 = params[:par_01]
p02 = params[:par_02]
p03 = params[:par_03]
p04 = params[:par_04]
Run Code Online (Sandbox Code Playgroud)

我得到这些值:

p01 => a
p02 => b
p03 => 
p04 => 
Run Code Online (Sandbox Code Playgroud)

换句话说,变量par_01par_02将被扔掉,并在他们的地方将被移动par_03par_04.

如何强制link_to接受带有nil值的参数?我正在考虑放置0s而不是nils然后在控制器动作中手动解析它,但这是一个非常难看的解决方案.

Nim*_*pta 3

您可以hash通过路线中的 id 作为第二个选项

使用

link_to go_to_action_path(id, { par_01: par_01, par_02: par_02, par_03: par_03, par_04: par_04 })

代替

link_to go_to_action_path(id, par_01, par_02, par_03, par_04)

然后,在控制器中,说操作名称是action

# here you can use your params
def action
  p01 = params[:par_01]
  p02 = params[:par_02]
  p03 = params[:par_03]
  p04 = params[:par_04]
end
Run Code Online (Sandbox Code Playgroud)