2011-07-14 8 views
0

私はRuby on Railsを使ってウェブサイトを開発しています。レールでページの内容を変更できるようにするには?テキストを照会しますか?

ユーザー(開発者ではなく)がインデックスなどの一部のページのテキストを編集できるようにするよりよい方法を探したいと思います。 (CMSのように)

実際には、FTPを使ってページを取得し、テキストを編集し、新しいファイルをサーバー(FTP経由)に置く必要がありました。

これは非常に悪い習慣であり、誰かがこの問題を解決するアイディアを持っているかどうかを知りたがっていますか?

感謝

答えて

0

これは、基本的なRailsのCRUD操作と同じになります。ページコンテンツを表すモデル/コントローラと、コントローラの編集ビューを作成するだけです。次に、ページに直接コンテンツを表示する代わりに、テキストを編集可能にするページで、ビューの一部を使用します。

もちろん、すべての人がページを編集できないように、ある種の認証を実装したいと思うかもしれません。

0

あなたが行うことのできることの1つは、ページにテキストを表す「コンテンツ」または「コピー」というモデルをデータベースに追加することです。次に、多形関連を使用してコンテンツ/コピーを実際のモデルにリンクすることができます。たとえば、製品のリストを含むページがある場合、データベースにProductモデルがある可能性があります。製品ページをレンダリングする際に、ユーザーがこの製品のために入力したすべてのテキストを取得するためにproduct.contents @呼び出すことができ、このシナリオでは

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 

:あなたはこのような何かを行うことができます。このように2つの別々のモデルを使用したくない場合は、Productモデル自体にテキストフィールドを置き、そこにテキストを入力させることができます。

関連する問題