Как вы организовываете файлы JavaScript в Rails 3? - PullRequest
0 голосов
/ 15 июля 2011

Я пишу веб-приложение на Rails 3, и я использую JQuery в качестве моей платформы Javascript.У меня пока нет тонны JavaScript в приложении, но я начинаю добавлять переходы между страницами, и мне интересно, есть ли хороший способ использовать файлы [function] .js.erb для организации переходов.Например, у меня есть контроллер приглашений с новой функцией редактирования.Есть ли способ использовать views / invitations / new.js.erb и views / invitations / edit.js.erb для запуска функции, когда документ готов?Прямо сейчас я просто использую их для обработки страниц после вызова AJAX.

Спасибо!

Ответы [ 2 ]

1 голос
/ 15 июля 2011

Я согласен с апноэдивингом .. лично, вызовы js.erb добавляют много когнитивных накладных расходов. Что я делаю, это загружаю мои javvavscripts в частичную раскладку

* приложение / просмотров / макеты / _javascripts.html.haml

= javascript_include_tag "https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"
= javascript_include_tag 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js'
= javascript_include_tag "http://yui.yahooapis.com/3.3.0/build/yui/yui-min.js" 
= include_javascripts :app
= hoptoad_javascript_notifier
= yield :javascripts

Затем я использую команду jammit из гема Jammit в минифий и сжимаю мои активы js и css

конфиг / assets.yml

javascripts:
  app:
    - public/javascripts/rail.js
    - public/javascripts/underscore-min.js
    - public/javascripts/jquery.dump.js
    - public/javascrippts/etc*.js

Для каждой страницы нужны пользовательские js уровня страницы, я добавляю блок content_for :javascripts внизу страницы:

приложение / просмотров / что-то / awesome.html.haml

%h1 cool page
Other cool stuff

- content_for :javascripts do
  :javascript
    $(document).ready(function(){
      console.log('This document is REaDY!! and, this page rocks');
      $.ajax({
         url: "#{new_item_path(@item)}",   //ruby is evaluated due to string interpolation
         success: function(data) {
           console.log('Loaded ' + data + ' from ' + #{new_item_path(@item)})
         } 
      });
    };

Это позволяет мне перейти к render 'layouts/javascripts' в нижней части моего application.html.haml макета, и все мои объекты javascript передаются внизу страницы, так что ускорите загрузку страницы, как , предложенное здесь Yahoo Это также позволяет мне использовать erb для генерации переменных для js уровня страницы из Rails, если необходимо

1 голос
/ 15 июля 2011

Файлы js.erb предназначены только для предыдущего использования: ajax или js звонки.

Я бы не рекомендовал это: это должно остаться на стороне клиента IMHO.Кроме того, он будет разделен на Rails в версии 3.1 (все еще хранится как драгоценный камень).

Вы должны просто поместить свои js в файлы, которые вы загружаете в ваших представлениях: основные и аккуратные.

...