0

メッセージモデルとコントローラーがあります。その中には、インデックス、ショーなどの標準機能があります。

「localhost:3000/messages」に移動すると、index.html.erb が表示され、部分的な _messages.html.erb がレンダリングされます。

そこにアンカーhrefがあります

<a href= "received_messages">Received Messages</a>

ただし、2つの問題が発生します。

received_messages は URL を追加していません。最初に / を追加しない限り、通常はそうすると思います。どうすれば追加できますか?

また、「localhost:3000/messages/received_messages」と手動で入力すると、messages#show 関数にリダイレクトされ続けます。なぜそれは一般的にですか?

私は received_messages.html.erb を持っていて、私のルートでも持っています

match '/received_messages', to: 'messages#received_messages'

コントローラーにも #received_messages 関数があります。

メッセージにリダイレクトされ続けるのはなぜですか#show

どうもありがとう = )

4

1 に答える 1

2

あなたは尋ねました:

「localhost:3000/messages/received_messages」と手動で入力すると、messages#show 関数にリダイレクトされ続けます。なぜそれは一般的にですか?

一般的に、あなたは「メッセージ」のアイデアを持っています...そして

  1. メッセージのコレクションを表示するには、「/messages」に移動します
  2. 特定のメッセージ (ID 56) を表示するには、「/messages/56」に移動します
  3. 編集するには、「/messages/56/edit」
  4. 新しいメッセージを作成するには: "/messages/new"

したがって、/messages/received_messages に移動すると、システムは ID「received_messages」のメッセージを表示しようとしています。

メッセージのコレクションに対するアクションが必要な場合は、次のようにルートを設定できます。

resources :messages do
  collection do
    get :received
  end
end

これは「/messages/received」に一致し、MessagesController#received アクションを実行し、app/views/messages/received.html.erb ファイルをレンダリングします。

于 2012-04-09T19:48:49.323 に答える