我有这个表单
表单的代码如下:
.form-group.form-item.row
=hidden_field_tag“test_method_id”,@test_method.id,id:'test_method_id'
CLS-SM-3
%标签签名标题
=text_field_tag'签名标题',nil,class:'表单控制',placeholder:'输入签名标题'
CLS-SM-3
%标签添加所需的证书类型
=collection_select:signature_requirement,:certificate_id,@certificates,:id,:name,selected:@test_method.certificate_id,include_blank:“select certificate type”,class:“form control select2 multi-select2”,multiple:“multiple”
COL-SM—2
%label.small强制签名
.表单检查.mt-2.文本中心
=check_box_tag'必选','必选',false,class:'表单检查输入'
COL-SM—2
%label.small在报告中显示签名
.表单检查.mt-2.文本中心
=check_box_tag'include_in_report'、'include_in_report'、false、class:'表单检查输入'
COL-SM—2
.icon.text-中心
%i create-signature-requirement-btn.fa.fa-plus-circle.add-icon
< /代码>
主要关注的是复选框,我想把这个值发送到Rails,但是它们没有传递给参数,我不知道为什么。
阅读一些StackOverflow答案和文档,但我找不到正确的解决方案。
如何获得要传递给Rails的复选框的值,取消选中该复选框(在Ajax成功时),然后在附加到表后选中它?
下面是代码,它获取了当前附加到表中的标题和证书类型的值。
$('create signature requirement btn').on('click',function(event)'{
event.preventDefault();
let test method id=$('test_method_id').val();
让signatureTitle=$('signature_title').val();
let certificate ids=$('signature_requirement_certificate_ids').val();
$Ajax({
网址:
'/settings/test_methods/'+testmethodid+'/add_signature_requirement',
datatype:'json',
方法:“POST”,
数据:{
签名要求:{
签名标题:签名标题,
证书ID:certificate ids
}
}
成功:函数(数据){
console.log(数据);
附录签名要求(数据);
$('签名_标题').val('');
$('签名\要求\证书\ ID')
Var(空)
.trigger(“更改”);
}
(});
(});
< /代码>
这是AppendSignatureRequirement()的代码
函数AppendSignatureRequirement(record){
行=$('签名_要求'+记录['id']);
文本=$('签名要求证书ID')。选择2(“数据”);
var html
'T&Gt';+
非空(记录['签名\u标题'])。+
'lt/t/gt;'+
'T&Gt';+
从多重选择中提取文本(文本)+
'lt/t/gt;'+
'T&Gt';+
“<a class='mr-2'href='javascript:EditSignatureRequirement(”“+
记录[ ID ] +
“”和“+”
“<i class='fa fa pencil text secondary'aria hidden='true'数据切换='tooltip'title='edit'></i>”“+
'l/a/gt';+
“<a href='javascript:DeleteSignatureRequirement(”“+
记录[ ID ] +
“”和“+”
“<i class='fa fa trash text danger'aria hidden='true'数据切换='tooltip'title='delete'></i>”“+
'l/a/gt';+
'& lt/td& gt;
如果(!)行,长度){
row=$('签名_要求').append(
“<tr id='signature_requirement_uu”+record['id']+”'>“+html+'</tr>”
;
}否则{
行。
row.append(html);
}
}
< /代码>
这是我的数据库表:
=>signatureRequirement(id:integer,signature_title:string,mandatory:integer,include_in_report:integer,test_method_id:integer,created_at:datetime,updated_at:datetime)
< /代码>
这是表的代码,显示值:
.col-sm-10
.表-响应.mt-5
%表.table.table-hover.table-valign-middle
%AD
%TR
第%标题
%th证书类型
%强制性
%在报告中显示
第%行动
%t车身签名要求
-@测试方法.签名要求.每个DO签名要求|
%tr:id=>“签名要求签名要求.id”
%TD
=签名\要求.签名\标题
%TD
-签名证书。每个DO证书|
%span.badge.badge-pill.badge-primary/主要
=证书名称
%TD
%a.mr-2:href=>“javascript:EditSignatureRequirement(签名要求.id)”
%i.fa.fa pencil.text secondary“aria hidden”=>“真”,“数据切换”=>“工具提示”,“标题”=>“编辑”
%a:href=>“javascript:DeleteSignatureRequirement(signature_requirement.id)”
%i.fa.fa垃圾桶。文本危险“aria hidden”=>“真”,“数据切换”=>“工具提示”,“标题”=>“删除”
< /代码> <
表单的代码如下:
.form-group.form-item.row
= hidden_field_tag "test_method_id", @test_method.id, id: 'test_method_id'
.col-sm-3
%label Signature Title
= text_field_tag 'signature_title', nil, class: 'form-control', placeholder: 'Enter Signature Title'
.col-sm-3
%label Add Required Certificate Types
= collection_select :signature_requirement, :certificate_ids, @certificates, :id, :name, { selected: @test_method.certificate_ids, include_blank: "Select Certificate Type" }, { class: "form-control select2 multi-select2", multiple: "multiple" }
.col-sm-2
%label.small Mandatory Signature
.form-check.mt-2.text-center
= check_box_tag 'mandatory', 'mandatory', false, class: 'form-check-input'
.col-sm-2
%label.small Show Signature in Report
.form-check.mt-2.text-center
= check_box_tag 'include_in_report', 'include_in_report', false, class: 'form-check-input'
.col-sm-2
.icon.text-center
%i#create-signature-requirement-btn.fa.fa-plus-circle.add-icon
主要关注的是复选框,我想把这个值发送到Rails,但是它们没有传递给参数,我不知道为什么。
阅读一些StackOverflow答案和文档,但我找不到正确的解决方案。
如何获得要传递给Rails的复选框的值,取消选中该复选框(在Ajax成功时),然后在附加到表后选中它?
下面是代码,它获取了当前附加到表中的标题和证书类型的值。
$('#create-signature-requirement-btn').on('click', function(event) {
event.preventDefault();
let testMethodId = $('#test_method_id').val();
let signatureTitle = $('#signature_title').val();
let certificateIds = $('#signature_requirement_certificate_ids').val();
$.ajax({
url:
'/settings/test_methods/' + testMethodId + '/add_signature_requirement',
dataType: 'json',
method: 'POST',
data: {
signature_requirement: {
signature_title: signatureTitle,
certificate_ids: certificateIds
}
},
success: function(data) {
console.log(data);
appendSignatureRequirement(data);
$('#signature_title').val('');
$('#signature_requirement_certificate_ids')
.val(null)
.trigger('change');
}
});
});
这是appendSignatureRequirement()
功能:
function appendSignatureRequirement(record) {
row = $('#signature_requirement_' + record['id']);
texts = $('#signature_requirement_certificate_ids').select2('data');
var html =
'<td>' +
non_null(record['signature_title']) +
'</td>' +
'<td>' +
extractTextFromMultiSelect(texts) +
'</td>' +
'<td>' +
"<a class='mr-2' href='javascript:editSignatureRequirement(" +
record['id'] +
")'>" +
"<i class='fa fa-pencil text-secondary' aria-hidden='true' data-toggle='tooltip' title='Edit'></i>" +
'</a>' +
"<a href='javascript:deleteSignatureRequirement(" +
record['id'] +
")'>" +
"<i class='fa fa-trash text-danger' aria-hidden='true' data-toggle='tooltip' title='Delete'></i>" +
'</a>' +
'</td>';
if (!row.length) {
row = $('#signature_requirements').append(
"<tr id='signature_requirement_" + record['id'] + "'>" + html + '</tr>'
);
} else {
row.empty();
row.append(html);
}
}
这是我的数据库表:
=> SignatureRequirement(id: integer, signature_title: string, mandatory: integer, include_in_report: integer, test_method_id: integer, created_at: datetime, updated_at: datetime)
这是表的代码,显示值:
.col-sm-10
.table-responsive.mt-5
%table.table.table-hover.table-valign-middle
%thead
%tr
%th Title
%th Certificate Types
%th Mandatory
%th Show in Report
%th Actions
%tbody#signature_requirements
- @test_method.signature_requirements.each do |signature_requirement|
%tr{:id => "signature_requirement_#{signature_requirement.id}"}
%td
= signature_requirement.signature_title
%td
- signature_requirement.certificates.each do |certificate|
%span.badge.badge-pill.badge-primary
= certificate.name
%td
%a.mr-2{:href => "javascript:editSignatureRequirement(#{signature_requirement.id})"}
%i.fa.fa-pencil.text-secondary{"aria-hidden" => "true", "data-toggle"=>"tooltip", "title"=>"Edit"}
%a{:href => "javascript:deleteSignatureRequirement(#{signature_requirement.id})"}
%i.fa.fa-trash.text-danger{"aria-hidden" => "true", "data-toggle"=>"tooltip", "title"=>"Delete"}