【问题标题】:Rails 5 - in link_to, how to pass a nil (NULL) param?Rails 5 - 在link_to中,如何传递一个零(NULL)参数?
【发布时间】:2018-10-30 08:41:51
【问题描述】:

我有一个链接,我需要传递一系列参数,其中 2 个参数始终为零。

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

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

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

par_01 = nil
par_02 = nil
par_03 = 'a'
par_04 = 'b'

然后在go_to_action 操作中:

p01 = params[:par_01]
p02 = params[:par_02]
p03 = params[:par_03]
p04 = params[:par_04]

我得到了这些值:

p01 => a
p02 => b
p03 => 
p04 => 

换句话说,变量par_01par_02 将被丢弃,并在它们的位置上移动par_03par_04

如何强制link_to 接受具有nil 值的参数?我正在考虑将 0s 放在那里而不是 nils 然后在控制器操作中手动解析它,但这是一个非常丑陋的解决方案。

【问题讨论】:

  • 不确定我们是否有足够的时间继续进行。 go_to_action_path 是什么?是路线吗?如果是这样,是什么?如果是方法,我们需要源代码。
  • 这是一个控制器动作的路径示例(是的,它是一个路由)。以上是伪代码。这里的问题是如何通过参数传递nil 值并在控制器操作的另一端“接收”它。
  • Nimish 的答案可能是正确的,但看看控制器的动作真的很有帮助。否则我们只能猜测。
  • 您是否尝试过在您的 ERB 中使用 &?简单地说,即使参数是nil,它也能让代码工作。

标签: ruby-on-rails ruby parameters routes link-to


【解决方案1】:

您可以将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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 2014-01-18
    • 2011-09-19
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    相关资源
    最近更新 更多