2017-01-24 17 views
0

Я хотел бы создать форму, в которой имя поля - type1, type2, type3 ... to type10, size1, size2, size3 ... to size10 и т. Д.Loop в форме html erb с использованием ruby ​​on rails

Мне нужно отобразить их в текстовом поле, чтобы пользователь мог вводить значения для них. Я не хочу вручную вводить ключ в каждом из них, потому что должен быть какой-то итератор цикла, который я могу использовать. Я знаю о каждом методе, но я просто хочу создать цикл для цикла через type1 для type10. Как я могу это достичь?

<div class="field" id="type1"> 
    <%= f.label :type1 %> 
    <%= f.select :type1 ,['text','barcode']%> 
</div> 

<div class="field" id="type2"> 
    <%= f.label :type2 %> 
    <%= f.select :type2 ,['text','barcode']%> 
</div> 

<div class="field" id="barcode_type1"> 
    <%= f.label :barcode_type1 %> 
    <%= f.text_field :barcode_type1 %> 
    </div> 

<div class="field" id="barcode_type2"> 
    <%= f.label :barcode_type2 %> 
    <%= f.text_field :barcode_type2 %> 
    </div> 

Любые предложения?

обновления:

$(document).on('turbolinks:load', function(){ 


if ($('#type1').find('option:selected').val() != "barcode") 
    { 
    $('#barcode_type1').hide(); 
    $("#barcode_type1").attr('disabled','disabled'); 
    } 
    else 
    { 
    $("#barcode_type1").removeAttr('disabled'); 
    $('#barcode_type1').show(); 
    } 

$('#type1').on('change', function(){ 
    if ($('#type1').find('option:selected').val() != "barcode") 
    { 
    $('#barcode_type1').hide(); 
    $("#barcode_type1").attr('disabled','disabled'); 
    } 
    else 
    { 
    $("#barcode_type1").removeAttr('disabled'); 
    $('#barcode_type1').show(); 
    } 
}) 

}); 

Если установить Div идентификатор ID = "типа1", то JS работает нормально. Если я использую «type # {i}», используя цикл, JS будет работать. Есть ли решение для этого. И я также хотел бы зацикливать тип 1 на тип 10 и barcode_type1 на barcode_type10 в Javascript. Есть ли способ сделать это эффективно.

ответ

1

Вы можете использовать:

<% for i in 1..10 do %> 
    <div class="field" id="type#{i}" 
    <%= f.label "type#{i}" %> 
    <%= f.select "type#{i}", ["text", "barcode"] %> 
    </div> 
<% end %> 
+0

Да, это сработало! Спасибо! – leo277

+0

как насчет в jquery? как мне сделать цикл переменных с индексом на спине? – leo277

+0

Для jQuery вы можете использовать 'for (i = 0; i <11; i ++) {#do something}' – Shannon

0

Вы также можете использовать каждый цикл, как вы упомянули, но не для цикла.

<% (1..10).each do |i| %> 
    <div class="field" id="type#{i}"> 
     <%= f.label "type#{i}" %> 
     <%= f.select "type#{i}" ,['text','barcode']%> 
    </div> 
    <div class="field" id="barcode_type#{i}"> 
     <%= f.label "barcode_type#{i}" %> 
     <%= f.text_field "barcode_type#{i}" %> 
    </div> 
<% end %> 
+0

, кто отказался от этого? – Sravan

+0

Пожалуйста, укажите причину слишком – Sravan

+0

Привет, я жду причины, и даже мой ответ неверен. – Sravan