我正在用Ruby on Rails開發一個網站。如何讓用戶使用rails修改頁面的內容?查詢文本?
我想找到更好的方式讓用戶(而不是開發人員)編輯某些頁面上的文本(如索引...)。 (如CMS?)
實際上,他們必須通過FTP獲取頁面,才能編輯文本並將新文件放到服務器上(通過FTP)。
這是一個非常糟糕的做法,我想知道是否有人有解決這個問題的想法?
非常感謝
我正在用Ruby on Rails開發一個網站。如何讓用戶使用rails修改頁面的內容?查詢文本?
我想找到更好的方式讓用戶(而不是開發人員)編輯某些頁面上的文本(如索引...)。 (如CMS?)
實際上,他們必須通過FTP獲取頁面,才能編輯文本並將新文件放到服務器上(通過FTP)。
這是一個非常糟糕的做法,我想知道是否有人有解決這個問題的想法?
非常感謝
它會和基本的Rails CRUD操作一樣。只需製作一個代表頁面內容的模型/控制器,以及一個控制器的編輯視圖。然後在你想讓文本可編輯的頁面上,而不是直接在頁面上使用視圖部分。
當然,您可能還需要實施某種類型的身份驗證,以確保不僅每個人都可以編輯頁面。
那麼,你可以做的一件事就是在你的數據庫中添加一個名爲「內容」或「複製」的模型,它代表頁面上的一些文本。然後,您可以使用多態關聯將內容/副本鏈接到您的實際模型。例如,如果您有一個包含產品列表的頁面,那麼您的數據庫中可能會有產品模型。你可以做這樣的事情:
class Content < ActiveRecord::Base
belongs_to :contentable, :polymorphic => true # excuse my lame naming here
# this model would need two fields to make it polymorphic:
# contentable_id <-- Integer representing the record that owns it
# contentable_type <-- String representing the kind of model (Class) that owns it
# An example would look like:
# contentable_id: 4 <--- Product ID 4 in your products table
# contentable_type: Product <--- Tells the rails app which model owns this record
# You'd also want a text field in this model where you store the page text that your
# users enter.
end
class Product < ActiveRecord::Base
has_many :contents, :as => :contentable # again forgive my naming
end
在這種情況下,該產品頁面呈現的時候,你可以叫@ product.contents檢索用戶對這款產品輸入的所有文本。如果您不想使用這樣的兩個獨立模型,則可以直接在產品模型本身上放置文本字段,並讓用戶在其中輸入文本。