Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何将数组作为分隔参数传递给方法_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 如何将数组作为分隔参数传递给方法

Ruby on rails 如何将数组作为分隔参数传递给方法,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,这似乎接近我需要的,但它不适合我 我有一个列表作为常量 TYPE = %w(:groups :projects) 我在我的RelatedList模型上使用 enumerize :list_type, in: %w(groups projects), scope: :type 因此,根据github页面上的文档 RelatedList.type(:groups) # returns all RelatedList of type 'groups' 但是,我想获取常量类型中包含的所有Rela

这似乎接近我需要的,但它不适合我

我有一个列表作为常量

TYPE = %w(:groups :projects)
我在我的RelatedList模型上使用

enumerize :list_type, in: %w(groups projects), scope: :type
因此,根据github页面上的文档

RelatedList.type(:groups) # returns all RelatedList of type 'groups'
但是,我想获取常量类型中包含的所有RelatedList

所以我试过了

RelatedList.type(TYPE) # doesn't work
RelatedList.send(:type, TYPE) # doesn't work
RelatedList.send(:type, *TYPE) # doesn't work.
RelatedList.type需要一个单独的参数列表作为符号,但我拥有的是一个符号数组

我如何做到这一点


根据下面回答中的DNNX请求,这里是完整的回溯

NoMethodError: undefined method `value' for nil:NilClass
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/bundler/gems/enumerize-bc01a5cb3c79/lib/enumerize/activerecord.rb:34:in `block (2 levels) in _define_scope_methods!'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/bundler/gems/enumerize-bc01a5cb3c79/lib/enumerize/activerecord.rb:34:in `map'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/bundler/gems/enumerize-bc01a5cb3c79/lib/enumerize/activerecord.rb:34:in `block in _define_scope_methods!'
    from (irb):2
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands/console.rb:90:in `start'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands/console.rb:9:in `start'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus/rails.rb:134:in `console'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:116:in `block in command'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:103:in `fork'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:103:in `command'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:80:in `block (3 levels) in go'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:80:in `fork'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:80:in `block (2 levels) in go'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:73:in `each'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:73:in `block in go'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:62:in `loop'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:62:in `go'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:78:in `block (3 levels) in go'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:78:in `fork'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:78:in `block (2 levels) in go'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:73:in `each'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:73:in `block in go'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:62:in `loop'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:62:in `go'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:78:in `block (3 levels) in go'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:78:in `fork'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:78:in `block (2 levels) in go'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:73:in `each'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:73:in `block in go'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:62:in `loop'
    from /Users/kw/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/zeus-0.13.3/lib/zeus.rb:62:in `go'
。。。我拥有的是一系列符号

不,不是。此
类型=%w(:groups:projects)
是两个字符串的数组
':groups'
':projects'
,而不是符号数组

请尝试以下方法:

TYPE = %w(groups projects)
RelatedList.type(*TYPE)
或者,如果您运气好,并且在Ruby 2.0.0上运行应用程序,请使用符号数组文字:

TYPE = %i(groups projects)
#=> [:groups, :projects]

为什么不
%i(组项目)
?我得到了nil:NilClass的
NoMethodError:undefined方法'value'。即使使用符号数组,它也不起作用
rb(main):002:0>RelatedList.type(type)NoMethodError:nil:NilClass from/Users/shivam/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/bundler/gems/enumerize-bc01a5cb3c79/lib/enumerize/activerecord的未定义方法'value'。rb:34:in'block(2 levels)in'define\u scope\u方法中的'来自/Users/shivam/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/bundler/gems/enumerize-bc01a5cb3c79/lib/enumerize/activerecord.rb:34:in'map'
RelatedList.type(*type)非常有效!你能把它作为答案贴出来吗?你能简单地解释一下*类型背后的魔力吗?我的意思是它基本上是什么?@DNNX如果在类内容中定义了TYPE,*TYPE是如何工作的。i、 例如,我只能调用Content::TYPE,不能直接调用TYPE。我尝试了*Content::TYPE和Content::*TYPE,但都失败了。