[Rails] 多型關連(Polymorphic Associations)

多型關連(Polymorphic Associations) 可以讓一個 Model 不一定關連到某一個特定的 Model。建立 model 時在最後面加一個字串的 _type 欄位說明是哪一種Model。 例如有 Article、Photo、Comment 三個 model 可以透過多型關連讓 Comment model belongs_to 到另外兩個 Model上,我們希望這兩個 Model 都可以被留言。 建立資料庫 rails g model comment content:text »

[Rails] Nested form

Nested form 可以將有關聯的 model attribute 放在同一個 form 裡面一起建立或更新。 例如一個商品有很多種規格,我希望在新增商品的時候就可以同時新增完規格( product has_many specs ) Model如下: class Product < ActiveRecord::Base has_many :specs, :dependent => :destroy accepts_nested_attributes_for :specs class »

[Rails] Gem Cocoon 功能與原理

cocoon Github page 有時候我們會需要動態新增表單欄位,比如說我希望可以同時新增很多 simple_field_for :specs 的表單,讓使用者可以新增或是刪除表格。 cocoon 提供了兩種 helper: link_to_add_association 及 link_to_remove_association 實作原理是用 javascript 動態生成表單。在安裝好 gem 之後,必須在 app/assets/javascripts/application.js »

[Rails] Gem Turbolink 功能與原理

Turbolink 的作用是讓每一個超連結都只用 Ajax 的方式將整個 body 內容替換掉,這樣換頁時就不需要重新載入 head 部份的標籤,包括 JavaScript 和 CSS 等,目的是可以改善換頁時的速度。 Turbolink 原理 Turbolinks 把頁面上所有 a 標籤添加了一個 click 處理函式。如果瀏覽器支援 PushState,Turbolinks 會對頁面發出 Ajax 請求,解析伺服器回過來的響應,把頁面整個 body 用響應回傳的 body 換掉。接著 Turbolinks »

[Rails] Asset pipeline

Assets 指的是 JavaScript、Stylesheets 和 image 這些靜態檔案。在 Rails 目錄中,只有 Public 是公開讀取的,通常靜態檔案都放在這個目錄下,以讓瀏覽器直接讀取。 而 Rails 的 Assets pipeline 框架可以突破 Public 目錄限制,將靜態檔案依需求放在不同目錄底下,Rails 會幫你組合並壓縮。 用 pipeline 的好處 將所有的 js 或 css 壓縮打包成單一檔案,減少 http request 的大小與數量,增加 »

[Rails] Gem SearchKick 使用方法

searchkick Github 首先先在 gemfile 內加入 gem searchkick 執行 bundle install 接著安裝java (若原先就已安裝,此步驟跳過) 安裝完 java 後,在終端機內輸入 複製這行 貼上 command line 然後 enter 就安裝完成 接下來在需要被搜尋的 model 內,加入 searchkick (這裡以 app/model/movie.rb 為例) 在終端機加入搜尋索引 在 config/routes »