0

config/routes が実際にルーティングするものを理解するのに少し苦労しています。たとえば、まったく新しいプロジェクトを開始し、Users コントローラーを生成し、config/routes.rb を次のように編集したとします。


config/routes.rb

SampleApp::Application.routes.draw do

match '/signup', to: 'users#new'

end

サーバーを起動すると、予想どおり、Users コントローラーに「新しい」アクションがないと表示されます。私はそれを作成します:


 users_controller.rb

 class UsersController < ApplicationController

 def new
 end

ページを更新すると、予想どおり、ユーザー/新しいテンプレートが必要であることがわかります。だから私の質問は: 私のビュー テンプレートは、「(コントローラー名)/(アクション名)」形式 (この場合は users/new.html.erb) のコントローラーおよびアクション名と常に同じでなければなりませんか? コントローラ アクションがサイトの機能の 1 つにリンクされている場合、テンプレートにランダムな名前を付けることはできませんか (たとえば、users/new.html.erb の代わりに users/rubyonrailsmeetup.html.erb)。

また、デフォルトで config/routes.rb に「resources :users」を追加すると、ビューのテンプレート ファイル名が上記の動作と一致するため、ビューの名前は「コントローラー/アクション」名に基づいて指定する必要がありますか?

お手数をおかけして申し訳ありません。Rails の魔法の一部とそうでないものを理解しようとしているところです。

4

2 に答える 2

2

renderRails は、コントローラ アクションで他のorredirectが呼び出されない場合、デフォルトでアクションと同じ名前のテンプレートをレンダリングしようとします。render :action基本的に、すべてのコントローラー アクションの最後に暗黙があります。

ただし、明示的なレンダリングを追加することで、これを簡単にオーバーライドできます。

render :rubyonrailsmeetup

わかりやすくするために編集: この呼び出しrenderは、config/routes ではなく、コントローラー コードで行われます。

于 2012-09-21T19:32:44.740 に答える
0

私のビューテンプレートは常にコントローラーとアクション名と同じでなければならないのですか? "(コントローラー名)/(アクション名)" 形式です

これらはデフォルトrender :view_file_rel_pathです。アクションの最後に指定することで、アクションから任意のビューをレンダリングできます

デフォルトで「resources :users」を config/routes.rb に追加すると、ビュー テンプレートのファイル名と一致します

routes.rbに追加されたものはすべて、コントローラーのみに直接関連付けられます。つまり、リクエストと一致し、コントローラー/アクションにマップされます。ビューのロジックはアクション コード内にのみ含まれます

于 2012-09-21T19:37:06.403 に答える