2

ルーティングRestful Resources、およびUrlHelperのRailsドキュメントを読みましたが、複雑な/ネストされたルートを作成するためのベストプラクティスをまだ理解していません。私が現在取り組んでいる例は、has_manyrsvpsであるイベント用です。したがって、ユーザーはイベントのリストを調べ、[登録]をクリックして、登録プロセスなどを実行します。URLを次のように表示します。

/events
/events/123 # possible without title, like SO
/events/123/my-event-title # canonical version
/events/my-category/123/my-event-title # also possible like this
/events/123/my-event-title/registration/new
... and all the restful nested resouces.

問題は、最小限のコードでこれを達成するにはどうすればよいですか?

これが私が現在持っているものです:

map.resources :events do |event|
  event.resources :rsvps, :as => "registration"
end

それは私にこれを与えます:

/events/123/registration

他の2つのルートを達成するための最良の方法は何ですか?

/events/123/my-event-title # canonical version
/events/my-category/123/my-event-title # also possible like this

my-categoryイベントが発生する可能性のある10種類の配列はどこにありますか。

私はEvent#to_param戻るように変更しました"#{self.id.to_s}-#{self.title.parameterize}"が、私/id/titleは全体の標準性を持っていることを望みます

4

2 に答える 2

1

あなたが記述した SEO フレンドリーな URL は、Rails が RESTful ルートを生成する方法に準拠していないため、通常のルートを使用してこれらを設定する必要があります。例えば:

map.show_event 'events/:id/:event_title', :controller => 'events', :action => 'show'

アプリケーションのすべてに、自動生成された RESTful ルートを使用する必要があるとは思わないでください。あなたがやろうとしていることに必ずしも適しているとは限りません。Railsルーティングガイドでさえそう言っています:

RESTful ルーティングは Rails の標準になっていますが、より単純な通常のルーティングがうまく機能する場所はまだたくさんあります。1 つのアプリケーション内で 2 つのスタイルを混在させることもできます。一般に、可能であれば RESTful ルーティングを優先する必要があります。これにより、アプリケーションの一部の記述が容易になります。しかし、それが適切でない場合、アプリケーションの最後のすべての部分を RESTful フレームワークに押し込もうとする必要はありません。

于 2010-03-19T00:09:54.433 に答える
-1

Railsルーティングガイドを見ましたか? ルーターを理解するための多くの情報があり、ネストされたリソースに関するセクションが含まれています。

于 2010-03-18T23:57:19.077 に答える