Как мне вставить значения переменных в HTML-теги в шаблонах ERB?

#ruby-on-rails #ruby #erb

#ruby-on-rails #ruby #erb

Вопрос:

У меня есть частичное подобное:

 <% office.map do |o| %>
   <input id='city' name='company[company_office][0][city]' value=.... type='text' />
<% end %>
  

Как я могу вставить значение типа o.office в атрибут? value="#{o.office}" не работает.

Ответ №1:

 <% office.map do |o| %>
   <input id='city' name='company[company_office][0][city]' value='<%= o.office %>' type='text' />
<% end %>
  

или вы могли бы использовать для этого помощники формы

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

1. нет, помощники формы, которые я не могу использовать, потому что у меня есть определенное имя. Большое спасибо, я не знаю, хочу ли я писать кавычки)

2. что вы имеете в виду под конкретным именем? кроме того, не рекомендуется переходить к циклу и создавать входные данные с одинаковым идентификатором. вы должны сделать свой идентификатор и имя динамическими.

Ответ №2:

Используйте встроенные теги ruby (erb),

 <%= o.office %>
  

Единственный раз, когда вы бы использовали #{o.office} , это когда вы не используете erb. Например, в вспомогательном методе, и вы хотите использовать свой ruby в строке. Но когда вы находитесь в html.erb файле, вы должны использовать теги erb.

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

1. <%= content_tag :ввод, :id => «город», :name => «компания [company_office] [0][город]», :value => «#{o.office}», :type => «текст» %> Я полагаю, можно было бы сделать это таким образом.

2.Согласен с ответами, за которые проголосовали лучшие. <%= o.office %> Просто хотел добавить, что новичкам важно распознавать различия между тегами erb со знаком равенства и без него. тег <%= ... %> versus <% ... %> со знаком равенства указывает, что вложенный код является выражением и отображает код в виде строки. Используется для встраивания строки кода в шаблон для отображения содержимого переменной. Теги без знака равенства обычно используются для включения циклов / условной логики в Ruby.