Как добавить действие конкретных элементов конвейера активов? - PullRequest
4 голосов
/ 06 февраля 2012

Я пишу приложение на Rails 3.2.1, и у меня есть некоторый код javascript, который я хотел бы добавить для представления с одним действием. Он просто вызывает плагин jquery и запускает обратный отсчет, но я хотел бы написать его в сценарии кофе, и я чувствую, что конвейер ресурсов является правильным инструментом для этого.

Также мне нужен доступ к переменным, передаваемым контроллером, таким как @question. Как бы я это сделал? Я изучил камень coffeebeans, но он работает только для :remote=>true форм и ссылок.

1 Ответ

1 голос
/ 26 июня 2012

Ваша проблема может быть решена разными способами.

Динамически добавлять активы

  1. Добавьте в наш помощник приложений следующий метод:

    module ApplicationHelper
        def include_related_asset(asset)
        #          v-----{Change this}
            if !YourApp::Application.assets.find_asset(asset).nil?
                case asset.split('.')[-1]
                    when 'js'
                        javascript_include_tag asset
                    when 'css'
                        stylesheet_link_tag asset
                end
            end
        end
    end
    
  2. Вызовите вспомогательный метод в вашем layout -файле:

    <%= include_related_asset(params[:controller].to_param + '_' + params[:action].to_param . 'js') %>
    
  3. Создайте конкретные активы для действий вашего контроллера. Например controller_action.js

Использование yield

  1. Добавьте <%= yield :head%> к макету головы
  2. Включите ваши активы из ваших просмотров действий:

    <% content_for :head do %>
    <%= javascript_include_tag 'controller_action' %>
    <% end %>
    

Для получения дополнительной информации см. Направляющие рельсов .


Для передачи данных контроллера в ваш javascript вы можете сделать:

    <%= javascript_tag do %>
        window.error_message = '<%= j error_message %>';
    <% end %>

Для получения дополнительной информации см. RailCast Episode # 324 .

...