我知道我在这里是个白痴,但我无法想到这是怎么做到的。我正在创建一个具有一定兴趣的应用程序,并且正在使用使用Nokogiri设置的Wikipedia。我有两个输入:Title
和Wikipedia
,但是想要使用scrape在数据模型中填充Summary
和Content
。我想在方法中的网址中使用Wikipedia
属性作为变量,但不断收到错误dynamic constant assignment PAGE_URL = "http://en.wikipedia.org/w/i...
。
我认为这些方法应该放在模型中,并在控制器下的Create definition中引用它们,但这似乎不起作用。
修改
我只是尝试按照建议从方法中取出常量,但我仍然遇到动态常量赋值错误。我的模型目前看起来像这样:
PAGE_URL1 = "http://en.wikipedia.org/w/index.php?title="
PAGE_URL2 = "&printable=yes"
def get_PAGE_URL
PAGE_URL = PAGE_URL1 + self.wikipedia + PAGE_URL2
end
def get_page
page = Nokogiri::HTML(open(PAGE_URL))
end
def get_summary
get_PAGE_URL
self.summary = page.css("p")[0].text
end
def get_full_page
get_PAGE_URL
puts page.css('div#content.mw-body div#bodyContent div#mw-content-text.mw-content-ltr p').each do |p|
self.content = puts p.text
end
end
答案 0 :(得分:0)
常量不能进入方法,它们必须在类的内部定义'直接范围。
编辑:
例如:
class WikiScraper
PAGE_URL = "http://www.wikipedia.org/"
def scrape
page_num = '5'
my_url = PAGE_URL + page_num
end
end