2016-09-19 10 views
0

は、だから私はは、私はこのエラーを取得し、これを実行すると、コントローラ

はこれまでのところ、それはしかし、この

def url 
    require 'json' 
    url = url appears here 
    doc = Nokogiri::HTML(open(url)) 
    doc.css(".ticket-price .h4").each do |t| 
     json = t.text 
     respond_to do |format| 
     format.json { render :json => {:seatname => json}} 
     end 
    end 
    end 

のように見える私のコントローラでカスタムメソッドを作成otのtyringよレール

AbstractController::DoubleRenderError 

2回呼び出されている場所がわかりません。私の推測は、それはその内部の各ステートメントのためです。 サム

+1

、それは、JSONを見つけるcouldntの@jsonを変更したこと、エラーを取得し、 –

+0

のうち、 'respond_to'ブロックを移動し –

答えて

0

これは動作するはずです:

def url 
    require 'json' 
    url = url appears here 
    doc = Nokogiri::HTML(open(url)) 

    // Constructing an array of hash 
    response_hash = doc.css(".ticket-price .h4").map{ |t| {seatname: t.text} } 

    respond_to do |format| 
     format.json { render :json => response_hash } 
    end 
end 

マックスは、あなたのコード内でrespond_toは、すべての一致する要素のために呼び出される、前述のように。代わりに、ハッシュの配列を作成し、それをレンダリングすることができます。

はこれを試しループ
0

はこのショット与える

"seatname": "seat1", 
"seatname": "seat2" 

感謝を::

def url 
    require 'json' 
    url = url appears here 
    doc = Nokogiri::HTML(open(url)) 

    response_hash = doc.css(".ticket-price .h4").map { |t| ["seatname", t.text] }.to_h 

    respond_to do |format| 
    format.json { render :json => response_hash } 
    end 
end 

を次のように見えるように何がJSONに戻ってくる2シート名を表示するための最良の方法だろうあなたの現在のコードでは、返り値doc.css(...)の一致する要素ごとにrespond_toブロックが一度呼び出されており、これによってDoubleRenderErrorが発生しています。これを解決するには、レスポンスデータを実際に送信することから分離する必要があります。それは役に立ちますか?

+0

がほとんど機能し、この最後の席、2席がありますを取得し、これが戻っています最後の座席 –

関連する問題