我有一个名为network
的表,它有type
列和number
。
我使用此select_tag
获取所有网络名称的列表:
<%= select_tag('NetworksList', options_from_collection_for_select(Network.all, :id, :name))%>
我还有2个标签字段,我想动态填充信息:
<p>Network Type: <%= content_tag('span', "", id: 'NetworkType') %></p>
<p>Network Number: <%= content_tag('span', "", id: 'NetworkNumber') %></p>
当用户从网络名称的下拉列表中选择网络时,我想在名为NetworkType
和NetworkNumber
的字段中显示所选项目的类型和编号。我希望在用户选择下拉列表后立即在视图中呈现。我该怎么做?
答案 0 :(得分:0)
将此Javascript放入Gson gson = new Gson();
FormRegisterRequestDto dto=gson.fromJson(data, FormRegisterRequestDto.class);
文件中:
app/assets/javascripts/network.js
这将注册一个事件处理程序,该处理程序将在更改网络选择时执行。处理程序将获取新选定的值并在$(document).ready(function() {
$("#network_network_list").change(function() {
var value = +$(this).val();
var network_index = $.inArray(value, networks);
var networkType = network_details[network_index][0];
var networkNumber = network_details[network_index][1];
$("#NetworkType").text(networkType);
$("#NetworkNumber").text(networkNumber);
});
});
数组中查找值,该数组将用于从networks
中的相应位置提取networkType
和networkNumber
} array。
现在,此时,network_details
和networks
尚未定义,因此您还需要在视图代码中包含一段Javascript,以便动态执行此操作:
network_details
Javascript代码使用jQuery,因此您需要确保在项目中配置了jQuery。检查<script>
var networks = <%= raw(@networks.map(&:id).to_json) %>;
var network_details = <%= raw(@networks.map {|network| [network.type, network.number] }.to_json) %>;
</script>
文件中是否存在这些行:
app/assets/javascripts/application.js
这些行包括项目的jQuery和jQuery UJS(不显眼的Javascript),这些将自动包含在资产管道中。