根据选定的下拉列表更改标签[Ruby on Rails 4.2]

时间:2016-05-24 14:37:39

标签: javascript jquery ruby-on-rails

我有一个名为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>

当用户从网络名称的下拉列表中选择网络时,我想在名为NetworkTypeNetworkNumber的字段中显示所选项目的类型和编号。我希望在用户选择下拉列表后立即在视图中呈现。我该怎么做?

1 个答案:

答案 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中的相应位置提取networkTypenetworkNumber } array。

现在,此时,network_detailsnetworks尚未定义,因此您还需要在视图代码中包含一段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),这些将自动包含在资产管道中。