Search code examples
ruby-on-railsslim-langruby-on-rails-5

How to add condition based selected status in select field


Select field:

select#language_top onChange="window.location.href=this.value"
  option value=("#{url_for(locale: 'en')}") data-image=("#{image_url('english.png')}") English
  option value=("#{url_for(locale: 'de')}") data-image=("#{image_url('german.png')}") selected='' German

I want to add selected='' based on a condition. I have done it like this:

select#language_top onChange="window.location.href=this.value"
  - if params[:locale] == "en"
    option value=("#{url_for(locale: 'en')}") data-image=("#{image_url('english.png')}") selected='' English
  - else
    option value=("#{url_for(locale: 'en')}") data-image=("#{image_url('english.png')}") English
  - if params[:locale] == "de"
    option value=("#{url_for(locale: 'de')}") data-image=("#{image_url('german.png')}") selected='' German
  - else
    option value=("#{url_for(locale: 'de')}") data-image=("#{image_url('german.png')}") German

I think it can be refactored. Any idea?


Solution

  • This should work for you:

    select#language_top onChange="window.location.href=this.value"
      option selected=(params[:locale] == "en") value=("#{url_for(locale: 'en')}") data-image=("#{image_url('english.png')}") English
      option selected=(params[:locale] == "de") value=("#{url_for(locale: 'de')}") data-image=("#{image_url('german.png')}") German