2

まず最初に、私はRailsに非常に慣れていないということを言わなければなりません。私はここ数日、チュートリアルを次から次へと進めてきましたが、まだいくつかの概念が欠けています。主な理由は、単純なサイト構造から始めたいのですが、すべてのチュートリアルは、サイト内のより多くのアプリケーションであるショッピングカートまたはブログのいずれかです。私のサイトにはデータベース駆動のフォトギャラリーを含むページがいくつかありますが、今のところ、これらの質問に対するいくつかの回答を得ようとしています。

サイトの構造:

ホーム| 写真| について| 仕事| コンタクト

作品には、たとえば次のサブページがあります。

html | ルビー| レール| bla-bla

  • コントローラー

新しいページごとにコントローラーを設定する必要がありますか、それともすべてのメインレベルのページを処理する1つのコントローラーを使用できますか?1つのコントローラーを使用できるとしたら、それはどのように機能し、各ページ(ビュー)を処理するアクションを次のように定義する必要がありますか?

class MainController < ApplicationController
  def index
  end

  def photos
  end

  def contact
  end

  # and so on ......
end
  • ルーティング:

上記をどのようにルーティングしますか。リソースと*getの違いは何ですか

  • 「写真/写真」を取得
  • リソース:写真

のような特定のページのコントローラーをセットアップするとき。レールgコントローラーコンタクトコンタクト

ビュー内にcontactというフォルダが作成され、その中にcontactというビューがあります。これは、URLがcontact / contactであることを意味し、ルートget "contact / contact"も追加します。ユーザーに入力するだけの場合http://mydomain/contact、これは実行されません。働くために。ユーザーが追加する必要がないように設定するにはどうすればよいですかhttp://mydomain/contact/contact 。これを回避する方法を見つける唯一の方法は、match動詞を使用することでした。

match "contact" => 'contact#contact'

これは、URLパスを変更するために、サイトのすべてのページで一致を使用する必要があることを意味しますか?

これらは私が持っている多くの質問のほんの一部であり、私が行ったほとんどのチュートリアルではそれほど明確ではありません。私はすでにユーザーガイドを使用するように言わないでください、そして今、圧倒されています。レールで作業している開発者からの明確な回答があればいいのですが、上で概説したような構造を設定しようと思います。

ありがとう

4

1 に答える 1

1

あなたは私が思ういくつかの矛盾するアドバイスを得るつもりです、しかしこれが私がすることです。

  • MainControllerを作成します(ホームページも処理するのでHomeControllerが好きですが、それは私だけです)。このコントローラーは、home、about、およびcontactのアクションを処理します。

  • 写真はデータベースからのものであり、各写真にインデックス/リストページと個々のページがある可能性が高いと言ったので、PhotosControllerを作成します。

  • 作業のメインページとすべてのサブページを処理するWorksControllerを作成します。

さて、一部の人々は、ホーム、アバウト、コンタクト、およびすべての作業ページ(サブページも)は、何をすべきかを知るのに十分賢い汎用のPagesControllerによって処理されるべきであると主張します(私自身も含みます)。私は今はそれに入るつもりはありません。

これら2つのルートの違い:

get "photos/photos"
resources :photos

最初のものは、「/ photos/photos」へのGETリクエストに対して単一のルートのみを作成するということです。2つ目は、「/photos」の標準のCRUD操作を作成します。

あなたの静的ページについては、おそらく先に進んで、次のものを作成します。

match "about" => 'main#about'
match "contact" => 'main#contact'
...

あなたがそこで何をするのかわからないので、写真や作品について言うのは難しいです。上記はDRYほどではありませんが、「スマートページコントローラー」ルートを使用しない限り、最も簡単です。

于 2012-11-30T19:55:30.707 に答える