Ruby未初始化常量作业(NameError)报废并添加到数据库中



我正在用NokogiriRuby on Rails创建一个刮刀。我的目标是从一个特定的网页上抓取工作。我创建了下面的代码,它产生了一组职务。所以这很好用。

我现在的问题是,我想把这些头衔添加到我的空缺数据库中。当我键入Vacancy.create(companyname=jobs[0])时,它应该创建一个具有数组中第一个职务的Vacancy

但它给了我一个错误:

app/services/job_service.rb:18:in":未初始化常量空缺(姓名错误(

所以看起来它不知道类Vacancy。因此,我需要文件vacancy.rb:

require_relative(../models/vacancy.rb')

但它给了我另一个错误:

未初始化常量ApplicationRecord(NameError(

所以我现在认为我在这里做了一些根本错误的事情。我是不是把整个scraper文件放错了文件夹(我应该把它放在rake文件夹中吗(?。我只想执行类似Vacancy.create的东西,这样它就可以把它推送到我的空缺数据库(又名Jobs(中。

这是刮刀(job_service.rb(:

require 'open-uri'
require 'nokogiri'
url = "https://www.savedroid.com/#karriere-section"
html_file = open(url).read
html_doc = Nokogiri::HTML(html_file)
jobs = []
html_doc.search('.job').each do |element|
jobs << element.text.strip
end

Vacancy.create(companyname=jobs[0])

确保模型已创建,并且表中有必要的字段

让我们把解析器的代码放入rails服务中:

class Jobs
def self.jobs
return @jobs if @jobs
require 'open-uri'
require 'nokogiri'
url = "https://www.savedroid.com/#karriere-section"
html_file = open(url).read
html_doc = Nokogiri::HTML(html_file)
jobs = []
html_doc.search('.job').each do |element|
jobs << element.text.strip
end
@jobs = jobs
end
end

然后你可以称之为内部轨道控制器:

VacancyController < ApplicationController
def create
Jobs.jobs.each do |job|
Vacancy.create(companyname: job)
end
end
end

最新更新