У меня есть параметры с возможностью редактирования и сохранения. Например, в таблице ниже
Имя_параметра Тип1 Тип2 Тип3
Test rdb (checkBox) rdb (checkBox) rdb (checkBox) Редактировать (кнопка)
Если я нажму кнопку «Изменить», строка будет включена, и мне нужно будет выбрать любой флажок одного типа и сохранить тип. При сохранении значения флажка типа я присвоил значение rdb = 't'. Это 't' сохранит его в базе данных. Теперь я сталкиваюсь с проблемой. Когда флажок установлен, значение становится нулевым. Ниже используется код.
Mange_Page. html .erb
<script>
$('.editoidbtn').click(function() {
var $this = $(this);
var oid = $this.closest('tr').find('td:first-child').filter(function() {
return $(this).find('.editoidbtn').length === 0;
});
var oidName = $this.closest('tr').find('td:first-child').next().filter(function() {
return $(this).find('.editoidbtn').length === 0;
});
var expected = $this.closest('tr').find('td:first-child').next().next().filter(function() {
return $(this).find('.editoidbtn').length === 0;
});
if ($this.html() === 'Edit') {
$this.html('Save');
oid.attr('contenteditable', true);
oidName.attr('contenteditable', true);
expected.attr('contenteditable', true);
$this.closest("tr").find("input[name='rd_b']").attr('disabled', false);
$this.closest("tr").find("input[name='rd_v']").attr('disabled', false);
$this.closest("tr").find("input[name='rd_c']").attr('disabled', false);
$this.closest("tr").find("input[name='review']").attr('disabled', false);
$this.closest('tr').css('border', " solid skyblue");
}
else {
if ($this.html() === 'Save') {
saveRows($this);
$this.html('Edit');
oid.attr('contenteditable', false);
oidName.attr('contenteditable', false);
expected.attr('contenteditable', false);
$this.closest("tr").find("input[name='rd_b']").attr('disabled', true);
$this.closest("tr").find("input[name='rd_v']").attr('disabled', true);
$this.closest("tr").find("input[name='rd_c']").attr('disabled', true);
$this.closest("tr").find("input[name='review']").attr('disabled', true);
$this.closest('tr').css('border', 'none');
}
}
});
Java script
function saveRows($this){
tr181 = $('#TR_protocol').is(":visible");
snmp = $('#SN_protocol').is(":visible");
var values = [];
var $row = $this.closest("tr"),
$tds = $row.find("td");
count = 0;
$.each($tds, function() {
values[count]=$(this).text();
count++;
});
if(tr181){
var parameter_name = values[0].trim();
var expected_value = values[1].trim();
if($row.find("input[name='rd_b']").attr('checked')){
var rdb = 't'
}else{
rdb =null;
}
if($row.find("input[name=rd_v]").attr('checked')){
var rdv = 't'
}else{
rdv =null;
}
if($row.find("input[name=rd_c]").attr('checked')){
var rdc = 't'
}else{
rdc =null;
}
if($row.find("input[name=reviews]").attr('checked')){
var review = null;
}
$.ajax({
type: "POST",
contentType: "application/json",
url: "/configuration/update_parameter",
data: JSON.stringify({
parameter_name: parameter_name,
expected_value: expected_value,
rdb: rdb,
rdv: rdv,
rdc: rdc,
review: review,
}),
beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
success: function (result) {
if (result === 'false') {
alert('Parameter not Updated !!!');
return false;
} else {
alert('Parameter Updated successfully !!!');
}
}
});
}
}
}
Из нижней части я получаю Ajax ответ как nil. Когда я нажимаю кнопку «Сохранить», управление переходит к другой части события, хотя у меня установлен флажок. Это должно go со значением 't'.
if($row.find("input[name='rd_b']").attr('checked')){
var rdb = 't'
}else{
rdb =null;
}