0

顧客が、開発者に戻ることなくアプリケーションを制御したいと考えるのはよくあることです。このような場合、彼らは通常、アプリケーションの静的な部分を編集できる単純な CMS を要求します。例えば:

  • プライバシーポリシー
  • 利用規約
  • セクションについて
  • お問い合わせセクション

Rails アプリケーションでは、モデルとコントローラーを別々にするのは面倒に思えます。なぜなら、それらは実際には単なるテキスト フィールドだからです (ただし、私の特定のケースでは、About/Contact Us セクションに複数のセクションを含めることができます)。コントローラーは非常にシンプルで比較的重要ではないため、コントローラーのディレクトリを乱雑にするためだけに存在しているように見えます。

これらの文字列をすべて含むことができ、名前でインデックスを付けることができる、ある種の StaticContent モデル (この名前は本質的に意味がありませんが) を考えていました。だから私はできる:

StaticContent.find_by_name("about")

またはそのようなもので、すべてを 1 つのコントローラーとモデルに保持します。私が説明した状況でこのタイプのデータを保存するためのより良いソリューションに遭遇した人はいますか?

4

2 に答える 2

0

データを .yml ファイルに入れることをお勧めします。

example.yml
 - content_name: privacy_policy
   - title: Privacy Policy  
   - content: blah blah blah
 - content_name: terms_and_conditions
   - title: Terms and Conditions
   - content: blah blah blah blah

それをseed_fuに追加し、列content_name、title、contentを持つ汎用テーブルをシードします。find_by_name に関しては、それを行うことに大きな問題はありません。ただし、yml ファイルを使用すると、このデータを保存する方法の問題を解決するのに役立つはずです

于 2013-05-30T22:13:44.833 に答える
0

モデルがいるアプリに取り組んだことがありPageます。friendly_idgem ( https://github.com/FriendlyId/friendly_id )を使用して、id と uri の両方として機能するスラッグを提供しました。したがって、次のようになります。

scope '/' do
  resource :pages
end

:idあなたのroutesファイルと、パラメーター(ただし、人間が読めるスラッグ)で検索しpage.content、レイアウトにレンダリングする(showアクション用の)非常に単純なコントローラーです。たとえば/terms、利用規約ページ/aboutを表示したり、概要ページを表示したりします。

オブジェクトのフィールドに保存したマークアップを作成するための wysiwyg エディターとして、TinyMCE ( http://www.tinymce.com/ ) を使用しました。contentpage

十分にシンプルで、真新しいpages. only: [ :show, :edit, :update ]もちろん、スラッグの作成/破棄/移動を許可せずに、編集可能なページをいくつかだけ与えたい場合は、これを簡単に制限してスラッグの編集を防ぐことができます。

于 2013-05-30T22:43:57.600 に答える