我有一个DefaultTemplate
包含现有记录的模型。我有另一种Template
模型,其中具有带有DefaultTemplate
记录的collection_select 。
我想做的是,只要用户选择这些选项之一,它的相关数据(例如内容和类型)就应自动填充到“新模板形式”的text_fields中,以便进行保存。
我已经研究发现,我可以使用JQuery和Ajax调用来做到这一点,但是我不知道从哪里开始呢?我提到了基于Rails 3中另一个collection_select中的选定项自动填充text_fields的问题,它回答了我想要的内容,但此人本人却发现代码太可怕了。我将不胜感激。谢谢
解决了!!
好的,所以在挠了两天后,我发现答案很简单。只有我一直很害怕,甚至没有尝试给ajax尝试一下,而我从来没有真正注意过它。万一有人在寻找相同的东西,这是对我有用的解决方案。
application.js文件
$(function($) {
$("#email_template_id").change(function() {
var selected_id = $("#email_template_id").val()
if (selected_id == '')
{
$('#email_template_email_subject').val('')
}
else {
$.ajax({
type: "GET",
url: "/default_email_templates/" + selected_id + ".json",
dataType: 'json',
success: function(data){
$('#email_template_email_subject').val(data.email_subject)
}
});
}
});
});
视图(在_form.html.erb
EmailTemplate中,其中DefaultEmailTemplate是Model,其值应在选择时出现)
<%= form_for(@email_template) do |f| %>
<div class="field">
<%= f.label :default_email_template_id, "Template Type" %>
<%= f.collection_select(:id, DefaultEmailTemplate.all, :id, :email_type, {prompt: "Select one"}, {:data => {remote: true}}) %>
</div>
<div class="field">
<%= f.label :email_subject %>
<%= f.text_field :email_subject %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
我们可以通过简单地一个接一个地传递参数来减少ajax代码,但是,我对此并不了解,并且确实尝试过。请发布有关该代码的任何建议。谢谢。
PS:也许我看上去不太正常,但是当我这样做的时候,这些对我有很大帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句