在 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
元素。
我想展示一个 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
元素。