Rails :为什么在将自定义名称属性添加到 text_field 时没有提交数据?
Rails : why data doesn't get submitted when a custom name attribute is added to the text_field?
在 text_field 中添加 name 属性时,数据没有提交,当我删除 name 属性时,它可以正常提交,但 jquery 验证不起作用。我正在使用 jquery formvalidation.io 插件进行验证,我想在 text_field 中添加自定义名称属性以进行验证。到目前为止,我发现很难理解,我尝试在 text_field 中添加这样的“ 'name'=>'test' ”,但没有用,希望有人能提出解决方案,以便两者jquery 验证和数据提交工作正常,谢谢。
这是我的HTML
<section class="content">
<%= form_for(tbl_ad_test_overview, :html => {:class => "form-online", :id => "form", :style => "margin-left: 15px; width: 95%;"}) do |f|%>
<div class="form-group">
<%= f.label :test, 'Test Number *', class: 'font-color' %>
<%= f.text_field :test, id: 'test', name:'test', placeholder: 'Test Number', class: 'form-control'%>
<br>
</div>
<div class="form-group">
<div class="col-lg-12 col-xs-offset-5">
<%= f.submit "Submit", id: 'validate', class: 'btn btn-primary'%>
</div>
</div>
<% end %>
</section>
这是我的Jquery
$(document).ready(function() {
$('#validate').on('click', function(event) {
$('#form').formValidation({
framework : 'bootstrap',
icon : {
valid : 'glyphicon glyphicon-ok',
invalid : 'glyphicon glyphicon-remove',
validating : 'glyphicon glyphicon-refresh'
},
fields : {
test : {
validators : {
notEmpty : {
message : 'Please enter a positive number greater than 0'
},
stringLength : {
min : 1,
message : 'Please do enter at least 1 number'
},
}
}
}
});
});
});
这是控制器中必需的参数
def tbl_ad_test_overview_params
params.require(:tbl_ad_test_overview).permit(:test)
end
您需要先以正确的方式编写验证脚本,例如使用以下示例代码...
$(document).ready(function() {
$('#loginForm').formValidation({
framework: 'bootstrap',
icon: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
},
fields: {
username: {
validators: {
notEmpty: {
message: 'The username is required'
},
stringLength: {
min: 6,
max: 30,
message: 'The username must be more than 6 and less than 30 characters long'
},
regexp: {
regexp: /^[a-zA-Z0-9_\.]+$/,
message: 'The username can only consist of alphabetical, number, dot and underscore'
}
}
},
password: {
validators: {
notEmpty: {
message: 'The password is required'
}
}
}
}
});
});
使用类似于上述格式的格式制作您的代码。如果自定义名称有问题,请编写脚本并使用嵌入式脚本解析的名称提交表单。从我更新的角度来看,名称应该不会影响表单属性。
text_field(:post, :title, size: 20)
# => <input type="text" id="post_title" name="post[title]" size="20" value="#{@post.title}" />
form helpers
在 form_for
记录的帮助下生成 默认名称 并将自定义名称添加到表单助手 overrides默认名称。
您正在将默认名称(在您的情况下为 tbl_ad_test_overview[test]
)覆盖为 test
,这 会导致提交失败.
解法:
不要添加自定义名称,而是在Jquery 验证中使用默认名称。
<%= f.text_field :test, id: 'test', placeholder: 'Test Number', class: 'form-control'%>
并在 Jquery 验证中使用 "tbl_ad_test_overview[test]"
而不是 test
。
在 text_field 中添加 name 属性时,数据没有提交,当我删除 name 属性时,它可以正常提交,但 jquery 验证不起作用。我正在使用 jquery formvalidation.io 插件进行验证,我想在 text_field 中添加自定义名称属性以进行验证。到目前为止,我发现很难理解,我尝试在 text_field 中添加这样的“ 'name'=>'test' ”,但没有用,希望有人能提出解决方案,以便两者jquery 验证和数据提交工作正常,谢谢。
这是我的HTML
<section class="content">
<%= form_for(tbl_ad_test_overview, :html => {:class => "form-online", :id => "form", :style => "margin-left: 15px; width: 95%;"}) do |f|%>
<div class="form-group">
<%= f.label :test, 'Test Number *', class: 'font-color' %>
<%= f.text_field :test, id: 'test', name:'test', placeholder: 'Test Number', class: 'form-control'%>
<br>
</div>
<div class="form-group">
<div class="col-lg-12 col-xs-offset-5">
<%= f.submit "Submit", id: 'validate', class: 'btn btn-primary'%>
</div>
</div>
<% end %>
</section>
这是我的Jquery
$(document).ready(function() {
$('#validate').on('click', function(event) {
$('#form').formValidation({
framework : 'bootstrap',
icon : {
valid : 'glyphicon glyphicon-ok',
invalid : 'glyphicon glyphicon-remove',
validating : 'glyphicon glyphicon-refresh'
},
fields : {
test : {
validators : {
notEmpty : {
message : 'Please enter a positive number greater than 0'
},
stringLength : {
min : 1,
message : 'Please do enter at least 1 number'
},
}
}
}
});
});
});
这是控制器中必需的参数
def tbl_ad_test_overview_params
params.require(:tbl_ad_test_overview).permit(:test)
end
您需要先以正确的方式编写验证脚本,例如使用以下示例代码...
$(document).ready(function() {
$('#loginForm').formValidation({
framework: 'bootstrap',
icon: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
},
fields: {
username: {
validators: {
notEmpty: {
message: 'The username is required'
},
stringLength: {
min: 6,
max: 30,
message: 'The username must be more than 6 and less than 30 characters long'
},
regexp: {
regexp: /^[a-zA-Z0-9_\.]+$/,
message: 'The username can only consist of alphabetical, number, dot and underscore'
}
}
},
password: {
validators: {
notEmpty: {
message: 'The password is required'
}
}
}
}
});
});
使用类似于上述格式的格式制作您的代码。如果自定义名称有问题,请编写脚本并使用嵌入式脚本解析的名称提交表单。从我更新的角度来看,名称应该不会影响表单属性。
text_field(:post, :title, size: 20)
# => <input type="text" id="post_title" name="post[title]" size="20" value="#{@post.title}" />
form helpers
在 form_for
记录的帮助下生成 默认名称 并将自定义名称添加到表单助手 overrides默认名称。
您正在将默认名称(在您的情况下为 tbl_ad_test_overview[test]
)覆盖为 test
,这 会导致提交失败.
解法:
不要添加自定义名称,而是在Jquery 验证中使用默认名称。
<%= f.text_field :test, id: 'test', placeholder: 'Test Number', class: 'form-control'%>
并在 Jquery 验证中使用 "tbl_ad_test_overview[test]"
而不是 test
。