您實際上無法「建立到info.html.erb的鏈接路徑」。
鏈接指稱爲「資源」的抽象事物。在Rails中,資源最終是對給定控制器的特定操作。在config/routes.rb
中指定的路由將URL路徑轉換爲控制器上的操作。
如果運行rake routes
,你會看到的輸出看起來是這樣的:
Prefix Verb URI Pattern Controller#Action
jobs GET /jobs(.:format) jobs#index
POST /jobs(.:format) jobs#create
new_job GET /jobs/new(.:format) jobs#new
edit_job GET /jobs/:id/edit(.:format) jobs#edit
job GET /jobs/:id(.:format) jobs#show
PATCH /jobs/:id(.:format) jobs#update
PUT /jobs/:id(.:format) jobs#update
DELETE /jobs/:id(.:format) jobs#destroy
它列出了所有你的應用程序中定義的路線。最右邊的列是正在運行的操作。 最左邊的列是您通常在視圖中調用link_to
時使用的列。
因此,要回答你的問題,你的info.html.erb
文件是在「上崗」控制器提供的視圖。
如果認爲不需要從數據庫或其他「工作」做的任何信息,則默認情況下,調用控制器上的行動「信息」,將剛剛渲染視圖 - 你不需要修改控制器。 (它會爲任何動作執行此操作,而不僅僅是「信息」。如果視圖未定義,則會生成404錯誤。)
因此,您需要添加一個映射到您的操作的路線。如果你看看config/routes.rb
,你會看到一行說resources :jobs
。如果您更改到:
resources :jobs do
collection do
get :info
end
end
您可以重新運行rake routes
命令,你會看到一個新行添加到輸出:
Prefix Verb URI Pattern Controller#Action
info_jobs GET /jobs/info(.:format) posts#info
這是指向正確的行動路線,你可以通過編寫<%= link_to 'Info', info_jobs_path %>
在視圖中鏈接到它。我通過「前綴」列獲得了該值,並添加了_path
,它告訴它爲該資源生成一個相對URI。如果我需要一個絕對URI(通常在郵件程序中需要),那麼我會使用info_jobs_url
。
您還可以通過其他方式指定路線,具體取決於您可能需要的其他信息 - 請查看Rails生成的config/routes.rb
中的註釋以瞭解詳細信息。
Hi Scott,感謝您的深入解答,快速的問題,如果我的routes.rb文件看起來像這樣 - Rails.application.routes.draw do get 「工作/信息」 資源:工作 根「的工作#指數」 結束 - 然後我在哪裏把你說的話添加到routes.rb中? – user2498890 2015-02-12 10:26:57
解決了它,非常感謝您的幫助! – user2498890 2015-02-12 11:33:47