create.js.erb, destroy.js.erb: Как эти файлы помещаются в приложение Rails - PullRequest
3 голосов
/ 23 сентября 2010

Мне не удалось найти документацию, в которой говорилось бы о том, как create.js.erb и destroy.js.erb вписываются в приложение Rails 3.

Какова логика этих типов файлов Javascript в приложении> контроллеры? Как и когда к ним обращаются?

Ответы [ 3 ]

2 голосов
/ 23 сентября 2010

Расширения файлов связаны с типами Mime.Проверьте мой ответ здесь .Он был написан для Rails 2.2.2, но та же логика сохраняется.Обратите внимание, что синтаксис respond_to изменился в Rails 3.
Кроме того, эти файлы находятся не в app/controllers, а в app/views/<controller_name>/

2 голосов
/ 23 сентября 2010

Когда вы получаете доступ к своему действию, например, через XMLHttpRequest, ваше действие ответит файлом javascript.

В вашем контроллере:

class MyController < ApplicationController

  respond_to :html, :js

  def show
    @my_model = MyModel.find(params[:id])

    respond_with @my_model
  end

end

Действие show ответит представлением htmlпри доступе через html и с просмотром je js при доступе через XMLHttpRequest.

1 голос
/ 23 сентября 2010

В основном это представления, отображаемые в ответ на вызов ajax.Когда вы делаете нормальный запрос, то контроллер передает varaialbes на ваш взгляд, т.е.create.html.erb.Если вы выполняете Ajax-вызов для контроллера, то контроллер выполняет рендеринг create.js.erb.

Основное отличие состоит в том, что в create.html.erb у вас должен быть полный шаблон вашей страницы.В случае create.js.erb у вас должен быть код JavaScript, который может изменить ваши представления.

Например:

$('#comments-box').html("<%= escape_javascript(index_comments(@commentable, @comments)) %>");
$('#comments-box-spinner').hide();
$('#flash').html("<%= escape_javascript(render(:partial => 'layouts/flash', :collection => flash)) %>");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...