【问题标题】:How to update select with jquery in rails?如何在rails中使用jquery更新选择?
【发布时间】:2014-03-31 11:26:11
【问题描述】:

我的 _form2.html.erb 中有以下脚本:

<script type="text/javascript">
$(function () {
        $('#toright').click(function () {
            var sel = document.getElementById("left");
            var len = sel.options.length;
            var w_id = this.getAttribute('w_id');
            for (var i = 0; i < len; i++) 
                {
                if(sel.options[i].selected) 
                    {
                    $.ajax("/r_holidays/destroy", {holiday_id: sel.options[i].value, group_id: w_id}).done(function(data){/*do something here*/});
                    ##########HERE SHOULD BE AN UPDATE-METHOD########
                    }
                }
        })
      });

$(function () {
        $('#toleft').click(function () {
            var sel = document.getElementById("right");
            var len = sel.options.length;
            var w_id = this.getAttribute('w_id');
            for (var i = 0; i < len; i++) 
                {
                if(sel.options[i].selected) 
                    {

                    $.ajax("/r_holidays/create", {holiday_id: sel.options[i].value, group_id: w_id}).done(function(data){/*do something here*/});
                    ##########HERE SHOULD BE AN UPDATE-METHOD########
                    }
                } 
        })
      });
</script>

这只会创建这个小的交换表:

绿色选择的ID是“left”,右边的是“right”。 我想要的是它在执行 AJAX 方法时更新左表。

我已经google了很多,但我找不到方法,我需要。 谁能帮帮我?

编辑@Anoop Joshi:

好吧,我认为它可以在服务器端重新渲染内容,然后在客户端重新加载它。 这是我的代码,需要重新加载:

<%= form_tag({}, {}) do %>
    <% holidays_array = @group.holidays.all.map { |holiday| [holiday.name, holiday.id] } %>
    <%= select(:holiday_id, :name, options_for_select(holidays_array),{}, {:multiple => true, :style => "width: 300px; background-color: #9FE", :width => "300", :size => 20, :id=>"right" }  ) %>
<% end %>

编辑:

我不想在我的选择中添加一些选项。我只需要更新整个选择,或者如果需要在文件中更新。

【问题讨论】:

  • 你的 ajax 响应怎么样?
  • 对不起,你什么意思?
  • 发生的情况是,当我单击 > 删除 ID 为“eine gruppe”的 RHolidays(代表多对多关系)和所选假期的 ID。

标签: jquery ruby-on-rails ruby ajax html-select


【解决方案1】:

假设您的成功数据如下所示,

data = [{
    "id": 123,
    "value": "abc"
}, {
    "id": 1234,
    "value": "abcas"
}, {
    "id": 1232,
    "value": "abcs"
}];

那么你的代码就是,

$.ajax("/r_holidays/destroy", {
    holiday_id: sel.options[i].value,
    group_id: w_id
}).done(function (data) {

    $(data).each(function () {
        $("#left").append($("<option/>", {
            value: this.id,
            html: this.value
        }));
    });

});

【讨论】:

  • 谢谢,但是没有选项可以重新加载
    吗?那会容易得多。
  • 我已经编辑了原始问题,以显示需要重新呈现哪些代码。
猜你喜欢
  • 2017-05-30
  • 2010-10-12
  • 1970-01-01
  • 2011-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多