2015-07-30 6 views
2

Я использую slim с небольшим массивом для заполнения тега select.Как заполнить массив в режиме Rails с использованием синтаксиса Slim

первой попытки:

=f.select (:productline) do 
    -[["productlinetest","value"],["[B] Bolted Bonnet"] ].each do |c| 
     = content_tag(:option, c.first, value: c.last) 

Это работает отлично, но если я хочу, чтобы добавить больше вариантов я бы их всех на одной и той же линии. Я бы предпочел бы что-то вроде этого:

=f.select (:productline) do 
    -[ 
     ["productlinetest","value"], 
     ["[B] Bolted Bonnet"] 
     ].each do |c| 
     = content_tag(:option, c.first, value: c.last) 

но это не работает.

ответ

0

Переместите массив в действие контроллера, а также использовать @variable в представлениях:

def my_awesome_action 
    @array = [["productlinetest","value"], 
      ["[B] Bolted Bonnet"]] 
end 

в представлениях:

= f.select (:productline) do 
    - @array.each do |c| 
     = content_tag(:option, c.first, value: c.last) 

Slim шаблонный движок не позволяет экспрессию нескольких линий, как в Ruby

+0

Есть ли способ сделать это в представлении? У меня не было бы проблемы с этим через контроллер, но есть много специализированных форм. – Suavocado

+0

@suavocado сделать это во взглядах, плохая практика. –

+0

Хорошо, я заставлю его работать. Спасибо, что ответили так быстро – Suavocado