在 rails 网络应用程序中选择时如何禁用 select 标签?

How do you disable a select tag upon choosing in a rails web app?

我想展示一个 select 菜单,当用户选择一个选项时,禁用 该菜单(保留 selection)。

我的代码如下:

my_controller.rb:

def action 
    @menu_disabled = true
end

my_helper.rb:

def menu_tag
   select_tag :menu_name,
           options_from_collection_for_select(@menu_options, 'id', 'title'),
           :prompt => 'my prompt',
           :disabled => @ menu_disabled
end

_menu.erb:

<%= menu_tag %>

index.html.erb:

<!-- headers, description, etc -->
<%= render :partial => 'menu' %>
<!-- footers, etc, -->

<script>
$(document).ready(function() {
    $('#menu_name').change(function() {
      $.ajax({
        url: "<%= action_path %>",
        data: {
          selection_id : $('#menu_name').val()
        },
        dataType: "script"
      });

    });
  });
</script>

action.js.erb:

$('#menu_name').html("<%= escape_javascript(render :partial => 'menu') %>");

这行不通。菜单仍然有效,并在 selection 时显示提示。其他更改(例如,修改 action 中的 @menu_options 集合)可以正确显示。发生什么事了?

Rails版本:4.0.2

Ruby版本:2.0.0

Jquery-rails gem版本:3.1.2

浏览器:Safari 8.0.4

使用 replaceWith 而不是 html,因为您要替换整个 select 元素。