キーワード_ENDを期待する、なぜ `構文エラー、予期せぬTconstant、予期していますか?

StackOverflow https://stackoverflow.com//questions/25005800

質問

特定のWebショップで特定の製品の価格を確認したい。

Webショップデータのハッシュを保存するために定数を使用しているので、編集が簡単です(もっと店舗が追加されます)。

これが私が使っているコードです:

require 'httparty'
require 'nokogiri'

class Prijscheckr

  STORES = {
    :zara => {
      'base_uri' => 'http://www.zara.com/nl/',
      'normal_price_css' => 'p.price > span',
      'css_normal_price_extract' => "[0].attr('data-price')",
      'normal_price_xpath' => '/p[3]/span',
      'xpath_normal_price_extract' => "[0].attr('data-price')"
    }
  }

  def begin(args = {})
    page = Nokogiri::HTML(HTTParty.get(args[:url]))

    price = page.css(STORES[:zara]['normal_price_css'])STORES[:zara]['css_normal_price_extract']
  end
end
.

を稼ぐとき
p = Prijscheckr.new

p.begin(url: 'http://www.zara.com/nl/nl/collectie-aw14/dames/jacks/leren-bikerjack-c269184p2137577.html')
.

結果は結果です:

    # Works
    # price = page.css('p.price > span')[0].attr('data-price')

    # Works
    # price = page.css(STORES[:zara]['normal_price_css'])[0].attr('data-price')

    # Does not work
    # price = page.css(STORES[:zara]['normal_price_css'])STORES[:zara]['css_normal_price_extract']
.

メソッドでハードコーディングせずにprice = page.css(STORES[:zara]['normal_price_css'])STORES[:zara]['css_normal_price_extract']をどのように連結することができますか?

役に立ちましたか?

解決

Rubyコードは文字列の連結によって作成できません。Lambaとしてcss_normal_price_extractを宣言したい場合があります

'css_normal_price_extract' => ->(val) {val[0].attr('data-price')}

price = STORES[:zara]['css_normal_price_extract'].call(page.css(STORES[:zara]['normal_price_css']))
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top