2016-10-11 6 views
0

Я пытаюсь использовать Link Thumbnailer, чтобы получить название, изображение и описание с сайта рецептов, и по какой-то причине я продолжаю получать ошибку , когда я предоставляю URL-адрес веб-сайта.Rails 4: Link Thumbnailer Bad URI format

На мой взгляд, у меня есть:

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

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

... и рецепт в этом примере:

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

Вот моя ошибка:

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' 

Когда я выборки изображение в моем контроллере, выполнив 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 

В чем разница между вызовом метода generate на recipe.image_link в моем цикле, против вызова его в контроллере конкретного Recipe?

+0

Я вижу, что вы зацикливание на массив '@ recipes', пожалуйста, вы можете отобразить значение этого массива? Я подозреваю, что в вашем массиве пустое значение, которое вызвало бы ошибку «BadUriFormat» –

+0

Oh jeezus. У меня было ощущение, что это было что-то глупое. У моего второго 'recipe' не было': image_link'. –

ответ

0

Записывая свой комментарий в качестве ответа. Ваш массив @recipes должен содержать пустое значение, которое заставляет камень поднимать исключение BadUriFormat.

Кроме того, я хотел бы предложить следующие варианты, чтобы избежать ненужных вычислений на камень при извлечении сайта:

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

  • attributes - расскажет драгоценный камень, чтобы только заботиться об изображениях
  • image_limit - скажет жемчужину, чтобы получить только одно изображение. Однако это может быть не самое лучшее, поскольку он не будет пытаться получить более одного изображения.
  • image_stats - покажет драгоценный камень, чтобы не заботиться о размере изображения и типа