solidusio / solidus

🛒 Solidus, the open-source eCommerce framework for industry trailblazers.
https://solidus.io
Other
4.97k stars 1.29k forks source link

either width or height must be specified #5649

Open SamuelBonilla opened 7 months ago

SamuelBonilla commented 7 months ago

Solidus Version:

gem "solidus", "~> 4.3"

gem "solidus_admin", ">= 0.2"

gem "solidus_auth_devise", "~> 2.5"

To Reproduce Steps to reproduce the behavior:

  1. Set up the Solidus environment using

bundle add solidus bin/rails g solidus:install

  1. Within the Rails application, navigate to the relevant view that is calling the image_tag helper method.
  2. Attempt to render an image without specifying either a width or height in the size parameter.
  3. See error: "either width or height must be specified".

Current behavior When attempting to use image_tag helper without specifying either a width or height in the size parameter, an error is produced stating that either width or height must be specified. This occurs even though the application's logic should provide a default or extract the size to ensure at least one dimension is present.

Extracted source (around line #15):

def call
  if image
    image_tag image.url(size), default_options.merge(options)
  else
    content_tag :div, nil, class: ['image-placeholder', size].join(' ')
  end
end

Expected behavior The application should either provide a default size if none is given or handle the absence of dimensions without raising an error, allowing for graceful degradation or a fallback to a default placeholder.

Screenshots

image

Desktop (please complete the following information):

Additional context

mitvitaminen commented 7 months ago

bump, same error here

using Desktop (please complete the following information):

OS: linux arch latest
Browser: firefox
Version: Last Version

Additional context

Ruby version: 3.0.0
Rails version: 7.1.3
The issue presents a problem in a Rails view where the image_tag helper is not handling the absence of a specified size gracefully. It seems to be an oversight in either the application's code or a library that the application is using.

Comments: I have to say that I have a lot of errors in the generated files right after installation (more then 190+) using eclipse ide latest version

mitvitaminen commented 7 months ago

Alright this issue resolved itself once I updated ruby to 3.3.0 with rvm @SamuelBonilla

nvandoorn commented 6 months ago

Hey @SamuelBonilla I had a quick look at this issue and I believe what you describe is more related to the image_processing gem and the underlying VIPS library: https://github.com/janko/image_processing/blob/c20d147765a064840d4cad0ff6b7ebcfe65eeaa8/lib/image_processing/vips.rb#L153

krnworks commented 6 months ago

bump, same problem after fresh installation

maikis commented 5 months ago

Same problem here. Ruby 3.3.0. Looks like seeded demo product images causes this failure. With all of the demo products removed and new products added everything works fine. Did not dig deeper yet to see what's wrong - the images itself are loading fine and are visible in admin backend.

asfour75 commented 5 months ago

This is weird ..

inside file app/components/image_component.rb I just replaced the size variable with constant when I was debugging.

image_tag image.url(size), default_options.merge(options) To image_tag image.url(:small), default_options.merge(options)

And everything worked fine !!

jarednorman commented 5 months ago

@nvandoorn The height/width should be coming from our code though, right? That's why @asfour75's change fixes it.

asfour75 commented 5 months ago

@nvandoorn The height/width should be coming from our code though, right? That's why @asfour75's change fixes it.

After further debugging .. the size variable passed to image_component.rb: :small, "product", :full

While this line: image_tag image.url(size), default_options.merge(options)

size variable can accept only: (mini: '48x48>', small: '100x100>', product: '240x240>', large: '600x600)

So I changed any value with 'big' -> 'product' and 'full' -> 'large'

Maybe the error message was misleading ..