Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.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 调用函数时参数错误_Ruby - Fatal编程技术网

Ruby 调用函数时参数错误

Ruby 调用函数时参数错误,ruby,Ruby,我在def extract\u文章(source\u url:,source\u type:,source\u key:)上的ArticlesController#scrap中遇到了ArgumentError问题。 我正在从不同来源提取文章列表,并将其返回给我的控制器函数 class ArticleController def Scrape @get_Articles = Source.new articles = @get_Articles.get_Article

我在
def extract\u文章(source\u url:,source\u type:,source\u key:)上的ArticlesController#scrap
中遇到了
ArgumentError问题。

我正在从不同来源提取文章列表,并将其返回给我的控制器函数

class ArticleController

  def Scrape
      @get_Articles = Source.new
      articles = @get_Articles.get_Articles
      ...
  end
end

class Source
  def get_Articles
    @articles = Array.new
    @articles = extract_Articles('url1','rss',nil)
    @articles = extract_Articles('url2','rss',nil)
    @articles = extract_Articles('url3','rss',nil)
    @articles = extract_Articles('url4','json','some-value')

  end  
  def extract_Articles(soruce_url:, url_type:, source_key:)
    ...
  end
end

有人能告诉我这个问题吗?令人惊讶的是,我不知道为什么这实际上不起作用

问题在于您的方法被定义为使用命名参数,但您尝试使用位置参数调用它

使用位置参数定义它:

def extract_Articles(soruce_url, url_type, source_key)
  # ...
end
或者用命名的名称调用它:

@articles = extract_Articles(soruce_url: 'url1', url_type: 'rss', source_key: nil)

方法参数应该是变量,您还可以设置参数的默认值

def extract_Articles(soruce_url, url_type, source_key=nil)
    ...
end

@articles = extract_Articles('url1','rss')
@articles = extract_Articles('url4','json','some-value')

您可以从

中获得更多详细信息。方法参数不能是符号,它们需要是变量,以便在通过传递值调用函数时,这些变量将具有该值

好的,我已经读过关于关键字参数的内容,下面是我的更新答案

你需要像这样传递参数

@articles = extract_Articles(soruce_url: 'url1',url_type: 'rss',source_key:nil)

很小的一点,ruby方法的命名通常都是小写的。使用下划线代替CamelCase。我想我们可能需要更多信息,ArticleController的路由以及调用此错误时的日志会很有帮助。这给了我们一个更好的机会来恰当地回答。我建议你阅读一下。谢谢,我当然不知道