誰かが、Ruby on Railsでマップされたリソースと名前付きルートをどのように扱うかを、わかりやすい、わかりやすい言葉で説明してもらえますか?
-
05-07-2019 - |
質問
仕事でプロジェクトで初めてRubyを使用しているので、いまだにロープを学んでいます(そして毎分大好きです)。
route.rbファイルの map.connect
関数のポイントは理解していますが、" resources"がわかりません。および「名前付きルート」 Railsの機能。私はここにRailsの本を持っていて、何度か読んでいますが、まだ手に入れません。名前付きルートはちょっとわかります-明示的に定義されたルールか、コードブロックによって計算されたルールのどちらかだと思いますが、リソースは私にとって完全な謎です。私が彼らに光らせた唯一のことは、「resource_path」(およびその素晴らしい関連するメソッドファミリー)を呼び出すことができるなど、クールなものを動作させたい場合に必要なことです。
私の現在のプロジェクトには以下があります:
map.resources :application_forms
map.resources :sections
map.resources :questions
map.resources :seed_answers
map.resources :question_types
map.resources :form_questions
map.resources :rules
map.resources :form_rules
..しかし、私のRailsの本には、この素晴らしい「has_many」があります。および「のみ」ハッシュとパラメータをそれらにぶら下げて、それらを使用することになっているときに正確に解決することはできません。
誰でも私をまっすぐに設定できますか?
解決
名前付きルートはそれだけです。 URLを生成するときに簡単に参照できるように、名前が添付されたルート。とりわけ、あいまいさを排除できます。
リソースは基本的に、操作するルートを持たせる「もの」です。 「セクション」がリソースであると定義するとき、あなたがしていることは「すべてのセクションを取得するルートが欲しい」ということです。新しいセクションを追加するルートが必要です。既存のセクションを編集するルートが必要です。セクションを削除するルートが必要です。"そのようなこと。これらのルートは、 index
、 new
、 edit
などの標準化されたメソッド名を指します。これらの各ルートには、それが何であるかに基づいて名前が割り当てられます。そのため、 'edit_section'
という名前のルートがあります。
:has_many
パラメーターを使用すると、特定の種類のものにサブのものがあると言うことができます。たとえば、 map.resources:sections、:has_many =>と言うことができます。 [:questions]
。これは、質問がセクションに属していることを意味し、これはURLとルートに反映されます。 '/ sections / 27 / questions / 12'
のようなURLと、 'section_questions'
のような名前付きルートが表示されます。
:only
パラメーターには、「これらのアクションのルートのみを作成する」と書かれています。編集や削除ではなく、アイテムの一覧表示、表示、追加のみを許可する場合に使用できます。
他のヒント
正直レールルーティングガイドは、得られる。リソースルート== RESTfulルートであり、準備ができていることを知ってください。
2006年の最初のRailsConfでDHHがRailsコミュニティにリソースとRESTを導入したとき、私たちはリソースとRESTの理解に苦労していました。
今日、コンセプトのより良い、より最新の説明があることは認めますが、当時、デイビッドの基調講演の直後に、ブログ投稿では、他の会議参加者との議論から、それを理解して説明しようとしました。最近の記事がそうであるように、RESTについてすべてを知っていることは当然のことではないので、あなたを助けるかもしれません。