我有两个选择,第二个根据第一个的值变化。我用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" } %>当select 1更改第二次重新加载中的选项时(第二次选择中的选项取决于在第一次中选择的选项。以下是我的CoffeScript代码:
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()它可以工作,但只有在我重新加载页面之后。如果我从通用link_to访问页面,那么CoffeScript似乎无法工作。因此,当导航到该页面时,我总是需要重新加载页面。使用link_to对页面的导航看起来像ajax,但我没有使用ajax。这是我的link_to:
<%= link_to "link", new_request_path %>
发布于 2015-03-11 17:24:50
我相信你在使用turbolinks。这样,您的jquery引导程序就会在您最初访问的页面上执行一次,并且不会与其他页面的DOM挂钩,因此您的回调不会赶上。
你有几个选择来处理这件事。
data-turbolinks-track='false'上使用javascript_tag属性。这样,js文件将与正文一起加载并在每个页面加载上执行。javascript_tag调用移动到body的底部。jquery-turbolinks宝石。https://stackoverflow.com/questions/28993043
复制相似问题