什么时候“respond_to do | format |”有意义的Javascript?

时间:2009-06-08 20:06:10

标签: ruby-on-rails rest

我在Rails控制器中看到了这段代码:

respond_to do |format|
  format.js {}
end

我已经看过这种格式的XML和HTML格式,但不是Javascript。

如果您使用REST,这是否就像指定返回格式一样,如果您使用replace_htmlremote_form_for?我知道RJS模板返回编译的Javascript,所以我想也许这就是这段代码可能会发挥作用的地方。

如果你把代码放在哈希符号(format.js {})里面,那么它是以javascript的形式发送回浏览器的吗?

3 个答案:

答案 0 :(得分:1)

当从浏览器向控制器发送AJAX请求时使用它。控制器可以使用将在客户端上执行的脚本(由视图中的ruby语句生成)进行响应。

答案 1 :(得分:1)

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用于常规requets,RSJ用于Ajax请求。你可能想在你的RJS模板中输入像'page.replace_html'.. iec这样的javascript代码。这样,您可以使控制器远离视图代码。

答案 2 :(得分:0)

yuo总是可以将格式添加到url并查看它的响应,/ something.js会使用format.js代码进行响应,如果要使用它,可以执行以下操作以避免渲染整个布局:

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

将以json字符串

响应
format.js { render :layout => false }

需要一个名为[action] .js.erb

的模板