-1

我有一个DefaultTemplate模型,其中包含现有记录。我有另一个Template模型,其中我有一个带有DefaultTemplate记录的 collection_select。

我想要做的是,一旦用户选择其中一个选项,其相关数据(例如内容和类型)应自动填充到新模板表单的 text_fields 中,以便可以保存它们。

我研究并发现我可以使用 JQuery 和 Ajax 调用来做到这一点,但是我不知道从哪里开始?我提到了 Auto populate text_fields based on selected item from another collection_select 在 Rails 3 中,它回答了我想要的,但这个人自己发现代码很糟糕。我将不胜感激任何帮助。谢谢

4

2 回答 2

0

解决了!!

好的,所以在挠了2天之后,我发现答案很简单。只是我一直不敢尝试 ajax,我从来没有真正关注过它。以防万一有人正在寻找相同的东西,这是对我有用的解决方案。

应用程序.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.erbEmailTemplate 中,其中 DefaultEmailTemplate 是其值应出现在 selection 上的模型)

<%= 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:也许我看起来不正确,但是当我这样做时,这些对我帮助很大

如何执行 Ajax GET 请求以从 rails 获取数据并将其传递给 javascript(谷歌地图)?

在rails上的ajx中传递text_field值

于 2016-04-09T04:37:40.447 回答
-1

public JsonResult FillTask(int projectID)
        {
            List<tbltask> task = new List<tbltask>();
            task = te.getTasks(projectID);
            model.Tasks = task;
            model.task = task.Select(x => new SelectListItem
            {
                Value = x.TaskId.ToString(),
                Text = x.TaskName
            }).ToList();
            //var tasks = model.Tasks.Where(c => c.ProjectId == project);
            return Json(model, JsonRequestBehavior.AllowGet);
        }

<script type="text/javascript">
    $(document).ready(function () {
        $("#tblprojects").change(function()
        {
            var projectID = $('#tblprojects').val();   
            if(projectID>0){
                FillTask(projectID)
            }
        });
    });
    function FillTask(projectID) {
        $.ajax({
            url: '@Url.Action("FillTask", "TimeEntry")',
            type: "GET",
            dataType: "JSON",
            data: { 'projectID': projectID},
            success: function (data) {  
                $(data.task).each(function()
                {
                    //this refers to the current item being iterated over
                    var option = $('<option />');
                    option.attr('value', this.Value).text(this.Text);

                    $('#task').append(option);
                });
            }
        });
    }
</script>

仅当我单击该项目的项目任务详细信息加载到另一个下拉列表中时,我才有与该项目相关的绑定任务,该下拉列表称为使用 ajax 和 jquery 的级联下拉列表!杰森方法也

于 2016-04-04T11:22:38.820 回答