Когда происходит "response_to do | format |" имеет смысл для Javascript? - PullRequest
1 голос
/ 09 июня 2009

Я видел этот код в контроллере Rails:

respond_to do |format|
  format.js {}
end

Я видел это для форматов XML и HTML, но не для Javascript.

Так ли вы задаете формат возврата, если используете REST, например, если вы используете replace_html или remote_form_for? Я знаю, что шаблоны RJS возвращают скомпилированный Javascript, поэтому я думаю, что, возможно, именно здесь этот код может сработать.

Если вы поместите код в хеш-символы (format.js {}), это то, что будет отправлено обратно как javascript в браузер?

Ответы [ 3 ]

1 голос
/ 09 июня 2009

Rails делает немного магии, выясняя, какой «шаблон» отправить

in controller:
   def foo
   end

in view: (app/views/controller/) you can have 
    foo.html.erb   (usual, html template)
    foo.rjs  (javascript template)

rails отправит правильный шаблон обратно в браузер, HTML для регулярных запросов и RSJ для запросов Ajax. Возможно, вы захотите вставить в свой шаблон RJS код javascript, например «page.replace_html» ..etc. Таким образом, вы держите контроллер в стороне от кода просмотра.

1 голос
/ 09 июня 2009

Используется, когда запрос AJAX отправляется из браузера на контроллер. Контроллер может ответить сценарием (который генерируется операторами ruby ​​в представлении), который будет выполнен на клиенте.

0 голосов
/ 09 июня 2009

yuo всегда может просто добавить формат в URL и посмотреть, что он отвечает, /something.js ответит с помощью кода format.js. Если вы хотите его использовать, вы можете сделать следующее, чтобы избежать рендеринга всего макета :

format.js { render :layout => false, :text => @models.to_json }

, который ответил бы строкой json

format.js { render :layout => false }

потребуется шаблон с именем [action] .js.erb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...