我在Rails控制器中看到了这段代码:
respond_to do |format|
format.js {}
end
我已经看过这种格式的XML和HTML格式,但不是Javascript。
如果您使用REST,这是否就像指定返回格式一样,如果您使用replace_html
或remote_form_for
?我知道RJS模板返回编译的Javascript,所以我想也许这就是这段代码可能会发挥作用的地方。
如果你把代码放在哈希符号(format.js {}
)里面,那么它是以javascript的形式发送回浏览器的吗?
答案 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
的模板