2015-03-11 3 views
1

У меня есть два выбора, второй - в соответствии со значением первого. Я использую CoffeScript.CoffeScript работает только после перезагрузки страницы в приложении Rails

\t \t <%= 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" } %>
При выборе 1 изменяет параметры во втором перезагрузок (опции, во втором выбрать в зависимости от выбранного варианта в первом Вот мой CoffeScript код:.

jQuery -> 
 
\t subTypes = $(".subTypes").html() 
 
\t $(".subTypes").parent().hide() 
 
\t $(".types").change -> 
 
\t \t type = $(".types :selected").text() 
 
\t \t options = $(subTypes).filter("optgroup[label='#{type}']").html() 
 
\t \t if options \t 
 
\t \t \t $(".subTypes").html(options) 
 
\t \t \t $(".subTypes").parent().show() 
 
\t \t else 
 
\t \t \t $(".subTypes").empty() 
 
\t \t \t $(".subTypes").parent().hide()
Это работает, но только после того, как я перезагрузите страницу. Если я получаю доступ к странице из общего link_to, кажется, что CoffeScript не работает. Поэтому, когда вы переходите на эту страницу, мне всегда нужно перезагрузить pa GE. Навигация по странице с помощью link_to выглядит как ajax, но я не использую ajax. Вот мой link_to:

<%= link_to "link", new_request_path %>

ответ

5

Я считаю, что вы используете turbolinks. Таким образом, ваш загрузочный загрузочный файл jquery выполняется один раз на странице, которую вы первоначально посещаете, и не подключается к DOM на других страницах, поскольку ваш обратный вызов не догоняет.

У вас есть пара вариантов решения этой проблемы.

  1. Используйте атрибут data-turbolinks-track='false' на javascript_tag в вашей голове макета. Таким образом, файл js будет загружен и выполнен на каждой загрузке страницы вместе с телом.

  2. Переместить весь javascript_tag звонок в нижней части вашего body.

  3. Использовать жемчужину jquery-turbolinks.

+0

Второй вариант помог. Большое спасибо. – yerassyl