У меня есть скрытые текстовые поля в моей таблице, которые становятся видимыми один за другим, когда я нажимаю кнопку добавления. Я хочу проверить (в рельсах) только те строки, которые видны.
<div class="info_type">
Internet<hr>
<table id="email_add">
<tr id="email_1">
<th><%= f.label(:email1,"Email :") %></th>
<td><input id="contact_email1" type="text" name="contact[email1]"></input>
</td>
</tr>
<tr id="email_2">
<th><%= f.label(:email2,"Email 2:") %></th>
<td><input id="contact_email2" type="text" name="contact[email2]"></input>
</td>
</tr>
<tr id="email_3">
<th><%= f.label(:email3,"Email 3:") %></th>
<td><input id="contact_email3" type="text" name="contact[email3]"></input>
</td>
</tr>
</table>
<input type="button" id="add_email" value="Add Email"/>
<input type="button" id="delete_email" value="Delete Email"/>
</div>
Я скрываю строки email_2 и email_3, используя jquery и показываю, когда щелкнут add. Есть ли какой-либо метод проверки видимости текстового поля при использовании проверочного тега электронной почты или мне нужно сделать это только в jquery?
Отправьте список скрытых полей в запрос, а затем в методе создания вы можете удалить поля, которые вы не хотите сохранять из параметров перед сохранением.
Для определения скрытых полей используйте JQuery $("#contact_email1").is(":visible")
Затем в контроллере перед сохранением удалите переменные скрытых элементов, используя params[:info].delete :email1
или params.delete :email1
зависимости от того, где он находится.
Итак, просто создайте список, используя некоторую логику, чтобы отслеживать скрытые элементы, возможно, просто используя int. Затем перебираем этот список и удаляем их из параметров.