[Rails] 如何 render .js,respond_to 小筆記

respond_to 小筆記

目的

  很多地方都會需要用到 render 的技巧,在這邊由於要實作 endless page(或稱infinite scrolling),所以需要動態的透過 ender ujs 來新增頁面中的資料。

前言

  使用 RoR 開發即將步入第四個月,對於 ujs 懵懵懂懂,所以在這邊小筆記一下專案中所學習的!

筆記

  在 controller 中,我們可以透過撰寫 respond_to 指定要 render 的內容,如:

examples_controller.rb
1
2
3
4
5
6
7
class ExamplesController < ApplicationController
def example
respond_to do |format|
format.js # 如果 client ask for js -> 就 return |format|.js
end
end
end

  Controller method(action) 透過 Default Rails mime-types 回傳相對格式作 render,上面的範例中,就會找到 /app/views/examples/example.js.erb 作 render。我們也可以透過block {}來作動作或檔案的 render,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
respond_to do |format|
format.js {
# 在 client 端執行 alert (javascript)
"alert('Hello Rails');",
# page not fount
status: 404,
# render /app/views/your-controller/test_action.js.erb
action: "test_action",
# 將 test_item 以 json 格式 render
json: @test_item,
# 找到指定的檔案作 render
file: filename,
# 直接 render text: Hello
text: "Hello"
}
end

That’s it, DONE!

【參考資料】