1

Ruby on Railsは初めてです。ルートに問題があります。ナビゲーションメニューがあります。家にコントローラーが一つあります。ホームコントローラー内には、いくつかのアクション/メソッドがあります。したがって、ユーザーがホームをクリックすると、ホームインデックスアクション内のホームコントローラーに移動して、ユーザーをホームページに移動する必要があります。ユーザーが連絡先をクリックすると、ホームコントローラー内の連絡先アクションに移動する必要があります。他のリンクも同様です。

私がしていることはここにあります

%a{:href => 'home'} Home
%a{:href => 'home/contact'} Contact

連絡先をクリックすると、ルーティングエラーが発生します

No route matches [GET] "/home/contact"

どうすればこの問題を解決できますか?

4

2 に答える 2

3

あなたがレールに慣れていないことは理解しています。ルーティングがレールでどのように機能するかの詳細をまだ読んでいないようです。

Rails ガイドの Routing from the Outside In に慣れることから始めることをお勧めします。このガイドでは、ルートの設定をより簡単にするために使用できるいくつかの簡単なショートカットについて説明しています。

たとえば、やろうとしていることを達成する 1 つの方法は、次を使用することです。

/config/routes.rbファイルに、必要なリンクに対して次のようなエントリを入力します。

  root :to => "home#home"
  get "home/index", :to => "home#index", :as => 'home_index'
  get "home/about", :to => "home#about", :as => 'about'
  get "home/contact", :to => "home#contact", :as => 'contact'

これらは、ビューで使用できる 、 、 、 などroot_pathhome_index_pathショートカットabout_pathを作成します。contact_path

次に、あなたの見解では、次を使用します。

 %a{:href => home_index_path } Home
 %a{:href => contact_path } Contact

これは、パスの使用方法のほんの始まりにすぎません。また、Rails の「安らかなルーティング」の使用方法とルーティング ファイルへの挿入方法も学びたいと思うでしょうresourcesが、それはおそらく今必要なものを超えています。

于 2012-07-02T13:19:54.497 に答える
1

この URL のルートを config/routes.rb に追加する必要があります。このようなものが動作するはずです:

match 'home/contact' => 'home#contact`

ただし、このアプローチは RESTful ではなく、多くの厄介なルートとコントローラーにつながるため、まったくお勧めしません。Rails でルートをより適切に設計する方法の詳細については、ルーティングに関する Rails ガイドを確認してください。

于 2012-07-02T12:20:44.693 に答える