almost 3 years ago

pic by iTarget

目的

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

前言

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

筆記

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

examples_controller.rb
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,如下:

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!

【參考資料】

← [Rails] 使用支援markdown編輯器 - via Pagedown-Bootstrap-Rails [Rails] 解決 modal update 時 FB plugin (share, like) reload →
 
comments powered by Disqus