2016-10-11 4 views
0

Link Thumbnailerを使用してレシピのウェブサイトからタイトル、画像、説明を取得しようとしていますが、何らかの理由でウェブサイトのURLを入力すると、BadUriFormatエラーが発生します。Rails 4:Link Thumbnailer Bad URI形式

<% @recipes.each do |recipe| %> 

    <tr> 
    <td class="recipe-info"> 
     <%= image_tag LinkThumbnailer.generate(recipe.image_link).images.first.src.to_s %> 
    </td> 
    </tr> 

...この例ではレシピは次のとおりです:私の見解では

私が持っている私がフェッチすると

ETHON: started MULTI 
ETHON:   performed EASY effective_url=http://res.cloudinary.com/paleoleap/image/upload/f_auto,q_90/v1459886762/j-paleo/simple-beef-shish-kabob-main.jpg response_code=200 return_code=write_error total_time=0.04831799999999997 
ETHON: performed MULTI 
ETHON: started MULTI 
ETHON:   performed EASY effective_url=http://paleoleap.com/pictures/icons/servings.png response_code=200 return_code=write_error total_time=0.053881 
ETHON: performed MULTI 
ETHON: started MULTI 
ETHON:   performed EASY effective_url=http://paleoleap.com/pictures/icons/prep3.png response_code=200 return_code=write_error total_time=0.050677 
ETHON: performed MULTI 
ETHON: started MULTI 
ETHON:   performed EASY effective_url=http://paleoleap.com/pictures/icons/cooking4.png response_code=200 return_code=write_error total_time=0.044727 
ETHON: performed MULTI 
ETHON: started MULTI 
ETHON:   performed EASY effective_url=http://res.cloudinary.com/paleoleap/image/upload/f_auto,q_90/v1459886762/j-paleo/simple-beef-shish-kabob-preparation.jpg response_code=200 return_code=write_error total_time=0.048975 
ETHON: performed MULTI 
    Rendered recipes/index.html.erb within layouts/application (510.5ms) 
Completed 500 Internal Server Error in 1040ms (ActiveRecord: 7.3ms) 

LinkThumbnailer::BadUriFormat (LinkThumbnailer::BadUriFormat): 
    app/views/recipes/index.html.erb:46:in `block in _app_views_recipes_index_html_erb___148801017206438179_70110103402900' 
    app/views/recipes/index.html.erb:26:in `_app_views_recipes_index_html_erb___148801017206438179_70110103402900' 

:ここ

#<Recipe:0x007fe48394a358> { 
    :id => 1, 
    :name => "test", 
    :image_link => "http://paleoleap.com/simple-beef-shish-kabobs/" 
} 

は私のエラーです私のコントローラの画像は LinkThumbnailer.generate(Recipe.find(1))で実行しても問題ありません。ここで

は成功です:

ETHON: started MULTI 
ETHON:   performed EASY effective_url=http://res.cloudinary.com/paleoleap/image/upload/f_auto,q_90/v1459886762/j-paleo/simple-beef-shish-kabob-main.jpg response_code=200 return_code=write_error total_time=0.056864 
ETHON: performed MULTI 
ETHON: started MULTI 
ETHON:   performed EASY effective_url=http://paleoleap.com/pictures/icons/servings.png response_code=200 return_code=write_error total_time=0.04847 
ETHON: performed MULTI 
ETHON: started MULTI 
ETHON:   performed EASY effective_url=http://paleoleap.com/pictures/icons/prep3.png response_code=200 return_code=write_error total_time=0.04541 
ETHON: performed MULTI 
ETHON: started MULTI 
ETHON:   performed EASY effective_url=http://paleoleap.com/pictures/icons/cooking4.png response_code=200 return_code=write_error total_time=0.039456 
ETHON: performed MULTI 
ETHON: started MULTI 
ETHON:   performed EASY effective_url=http://res.cloudinary.com/paleoleap/image/upload/f_auto,q_90/v1459886762/j-paleo/simple-beef-shish-kabob-preparation.jpg response_code=200 return_code=write_error total_time=0.0386 
ETHON: performed MULTI 

私のループでrecipe.image_linkgenerateメソッドを呼び出すと、対コントローラに特定のRecipeでそれを呼び出すことの違いは何ですか?

+0

を画像サイズを気にして入力していないために宝石を教えてくれるか?あなたの配列の中で空白の値が疑われています。これは 'BadUriFormat'例外を引き起こします。 –

+0

ああジーゼス。私はそれがそれのような愚かなものだったという気持ちがあった。私の2番目のレシピは ':image_link'を持っていませんでした。 –

答えて

0

回答として回答を記入してください。 @recipesの配列には空白の値が含まれている必要があります。この値によって、BadUriFormatの例外が発生します。

また、私はウェブサイトを取得する際に宝石によって不要な計算を避けるために、以下のオプションをお勧めします:

LinkThumbnailer.generate(url, attributes: [:images], image_limit: 1, image_stats: false)

  • attributes - 画像のみ
  • を気にする宝石を教えてくれますimage_limit - 1つのイメージだけを取得するように宝石に指示します。ただし、複数のイメージを取得しようとしないため、最適ではない可能性があります。
  • image_stats - あなたはその配列の値を表示してくださいすることができ、あなたは `@のrecipes`のアレイ上でループしていることを私は見
関連する問題