Создание списка опций с помощью haml

#sinatra #haml #ruby-2.0

#sinatra #haml #ruby-2.0

Вопрос:

Я пытаюсь создать элемент управления select с параметрами, используя HAML в Sinatra. Для каждого значения в моем массиве @ages должен быть параметр. Я проверил, что @ages действительно присутствует в представлении, распечатав его. Однако мой тег select не отображает эти @ages.

 %form
  %label='Portfolio Type'
  %select{name: :portfolio_type}
    %option{value: :cash}='Cash'
    %option{value: :securities}='Securities'
  %br
  %label='Current Age'
  %select{name: :current_age }
  - @ages.each do |age|
    %option{:name => age, :value=> age}="#{age}"
  %br
  %label='Current Savings'
  %input

  %input

  %input
  

ниже приведен генерируемый HTML-код. Я вижу, что тег select закрывается перед параметрами.

 <form>
        <label>Portfolio Type</label>
        <select name='portfolio_type'>
          <option value='cash'>Cash</option>
          <option value='future_advisor'>Future Advisor</option>
        </select>
        <br>
        <label>Current Age</label>
        <select name='current_age'></select>
        <option value='25'>25</option>
        <option value='26'>26</option>
        <option value='27'>27</option>
        <option value='28'>28</option>
        <option value='29'>29</option>
        <option value='30'>30</option>
        <option value='31'>31</option>
        <option value='32'>32</option>
        <option value='33'>33</option>
        <option value='34'>34</option>
        <option value='35'>35</option>
        <option value='36'>36</option>
        <option value='37'>37</option>
        <option value='38'>38</option>
        <option value='39'>39</option>
        <option value='40'>40</option>
        <option value='41'>41</option>
        <option value='42'>42</option>
        <option value='43'>43</option>
        <option value='44'>44</option>
        <option value='45'>45</option>
        <option value='46'>46</option>
        <option value='47'>47</option>
        <option value='48'>48</option>
        <option value='49'>49</option>
        <option value='50'>50</option>
        <br>
        <label>Current Savings</label>
        <input>
        <input>
        <input>
      </form>
  

Комментарии:

1. Можете ли вы вставить сгенерированный HTML-код?

2. @mus Спасибо за предложение. Я обновил вопрос. Вы можете видеть, что тег select закрывается перед параметрами. Не уверен, почему.

Ответ №1:

Как вы заметили, тег select закрывается до того, как будут перечислены опции. Это потому, что вы не сделали отступ в - @ages.each do |age| инструкции.

Измените это:

 %select{name: :current_age }
- @ages.each do |age|
  %option{:name => age, :value=> age}="#{age}"
  

К этому:

 %select{name: :current_age }
  - @ages.each do |age|
    %option{:name => age, :value=> age}="#{age}"