ruby-on-rails - 动态处理参数的语法

标签 ruby-on-rails

一系列参数正在提交给 Rails Controller :

"25"=>"true", "30"=>"false", "35"=>"true", "40"=>"true", "45"=>"true", "50"=>"true", "55"=>"true", "60"=>"true", "65"=>"false", "70"=>"true", "75"=>"true", "80"=>"false", "100"=>"true"

目标是循环:

@age_limits = [25,30,35,40,45,50,55,60,65,70,75,80,100]

并根据每个参数的值进行处理。

问题是引用参数的语法回避了我:

@age_limits.each do |limit|
  puts params[:"#{limit}"]
  if params[:"#{limit}"] == "true"
    session[:demographic_agegroups] << params[:"#{limit}"]
    puts session[:demographic_agegroups]
  end
end

params[:"#{limit}"]params[":#{limit}"] 都不允许访问该参数。前者将通过放入控制台返回值(编辑器 BBEdit 不认为它是正确形成的 Ruby),但不允许在其基础上进行处理。

Controller 如何正确访问参数并根据其值进行处理?

最佳答案

您缺少将 int 转换为 string

由于您的 params 键是字符串,因此您可以使用 params[limit.to_s]

此外,如果其基于 key 的 "keyX".to_sym 将为 :keyX

关于ruby-on-rails - 动态处理参数的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63735500/

相关文章:

ruby-on-rails - 通过 get in rails 传递参数数组

ruby-on-rails - 使用正则表达式进行拆分而不删除分隔符

ruby-on-rails - Rails - 仅在开发中允许在 CORS 设置中使用 localhost

ruby-on-rails - ruby "each do"和 scriptaculous Effect.BlindDown/Up

ruby-on-rails - Ruby on Rails 命令 rake db :migrate not working using PostgreSQL

mysql - Rails 数据库性能调优

ruby-on-rails - 以逻辑运算符 AND/OR/NOT 结尾的 Sunspot/Solr 查询会导致错误

ruby-on-rails - Rails 3.1界面设计——级联下拉、表单输入

mysql - 构建类似 MTurk 的应用程序——当每个任务的列名发生变化时如何使用数据库?

ruby-on-rails - 协会中的Rails轮胎搜索has_many