我有两个选择,第二个选择根据第一个选择的值而改变。我使用CoffeScript。
<%= f.collection_select :type, RequestType.order(:typeName), :id, :typeName,
{include_blank:true }, {:class => "types"} %>
<%= f.grouped_collection_select :subtype, RequestType.order(:typeName),
:RequestSubTypes, :typeName, :request_type_id, :subTypeName,
{include_blank:true},
{:class => "subTypes" } %>
&#13;
jQuery ->
subTypes = $(".subTypes").html()
$(".subTypes").parent().hide()
$(".types").change ->
type = $(".types :selected").text()
options = $(subTypes).filter("optgroup[label='#{type}']").html()
if options
$(".subTypes").html(options)
$(".subTypes").parent().show()
else
$(".subTypes").empty()
$(".subTypes").parent().hide()
&#13;
<%= link_to "link", new_request_path %>
&#13;
答案 0 :(得分:5)
我相信您正在使用turbolinks
。这是你的jquery引导程序在你最初访问的页面上执行一次的方式,并没有与其他页面的DOM挂钩,因为你的回调没有赶上。
你有几个选择来处理它。
在布局主管中的data-turbolinks-track='false'
上使用属性javascript_tag
。这样,js文件将在每个页面加载时与主体一起加载和执行。
将整个javascript_tag
来电移至body
的底部。
使用jquery-turbolinks
gem。