【问题标题】:Variable URL with Instance Variables带有实例变量的变量 URL
【发布时间】:2014-04-12 21:45:55
【问题描述】:

我知道我在这里是个白痴,但我想不出这是怎么做到的。我正在创建一个具有特定兴趣的应用程序,并且正在使用使用 Nokogiri 设置的 Wikipedia scrape。我有两个输入:TitleWikipedia,但想使用刮擦在数据模型中填充SummaryContent。我想将Wikipedia 属性用作方法内的url 中的变量,但不断收到错误dynamic constant assignment PAGE_URL = "http://en.wikipedia.org/w/i...

我认为方法应该放在模型中,在控制器下的创建定义中引用它们,但这似乎不起作用。

编辑

我刚刚尝试按照建议从方法中取出常量,但我仍然遇到动态常量分配错误。我的模型目前看起来像这样:

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

【问题讨论】:

    标签: ruby ruby-on-rails-4 instance-variables


    【解决方案1】:

    常量不能进入方法内部,它们必须在类的直接作用域内定义。

    编辑:

    例如:

    class WikiScraper
        PAGE_URL = "http://www.wikipedia.org/"
    
        def scrape
          page_num = '5'
          my_url = PAGE_URL + page_num
        end
    
     end
    

    【讨论】:

    • 你在PAGE_URL = PAGE_URL1 + self.wikipedia + PAGE_URL2线上还有一个动态分配。任何全部大写的变量都将被视为常量。解决此更改 PAGE_URLpage_url
    猜你喜欢
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 2014-09-21
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多