ruby-on-rails - Rails 5 - 在 link_to 中,如何传递 nil (NULL) 参数?

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

我有一个链接,我需要在其中传递一系列参数,其中 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 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_03 par_04.

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

最佳答案

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

然后,在 Controller 中,说操作名称是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

关于ruby-on-rails - Rails 5 - 在 link_to 中,如何传递 nil (NULL) 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50436177/

相关文章:

jquery - capybara-webkit 无法模拟点击(非链接/按钮)元素

mysql - 尝试使用 cPanel 添加子域或添加数据库时出错

ruby-on-rails - 在arm64上安装gem idn-ruby失败

ruby-on-rails - 合并两个ActiveRecord数组并按created_at排序

ruby-on-rails - gem install therubyracer -v 0.11.4 在 OS X 10.10 上失败

php - 在 php mysql 查询中添加更多搜索变量时遇到问题

ruby-on-rails - ActiveRecord .... activerecord-mysql-adapter

ruby - 如何在 textmate 中自动运行 RSpec

jquery - 从函数调用中获取 html 属性

sql-server - 将 where 子句中的常量移至变量会显着改变执行计划吗?