我在ArgumentError in ArticlesController#scrape
def extract_Articles(source_url:, source_type:, source_key:)
我从不同来源提取文章列表,并将其返回到我的控制器功能。
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
有人可以告诉我这个问题吗?令人惊讶的是,我不确定为什么这实际上不起作用!
答案 0 :(得分:3)
问题是您的方法被定义为使用命名参数,但您尝试使用位置参数调用它。
使用位置参数定义它:
def extract_Articles(soruce_url, url_type, source_key)
# ...
end
或者用命名的方法调用它:
@articles = extract_Articles(soruce_url: 'url1', url_type: 'rss', source_key: nil)
答案 1 :(得分:2)
方法参数应该是变量,您还可以设置参数的默认值。
def extract_Articles(soruce_url, url_type, source_key=nil)
...
end
@articles = extract_Articles('url1','rss')
@articles = extract_Articles('url4','json','some-value')
您可以从here
获取更多详细信息答案 2 :(得分:2)
方法参数不能是它们需要变量的符号,因此当通过传递值调用函数时,这些变量将具有该值。
好的,我已经阅读了有关关键字参数的信息,所以这是我更新的答案
你需要像这样传递params
@articles = extract_Articles(soruce_url: 'url1',url_type: 'rss',source_key:nil)