![](/img/trans.png)
[英]Ruby on Rails: how to render a view from same controller but with a different route?
[英]Rails 4 - How do I show a different view for the same controller action, based on the current route?
我有一個帶有索引動作的標准職位控制器。
目前,我將其路由為主頁/
以及帖子頁面/posts
class PostsController < ApplicationController
def index
# Logic and finds here
end
end
在我的routes.rb
文件中:
root to: "posts#index"
get "/posts" => "posts#index"
但是,我認為,根據路線是/posts
還是just /
,我希望將布局略有不同。 這可能嗎? 如果是這樣,最佳做法是什么?
我當時正在考慮在posts控制器中創建另一個動作,但是隨后我將復制已經在index動作中定義的邏輯-我想避免這種情況。
我基本上想使用相同的內容,但顯示不同的視圖。
任何建議或幫助,我們將不勝感激。
謝謝,邁克爾。
除了使用不同的控制器/動作之外,一種解決方案是從路由器中傳入一個附加參數:
root to: "posts#index", source: 'home'
get "/posts" => "posts#index"
然后,您可以在控制器中執行以下操作:
class PostsController < ApplicationController
def index
# Logic
render(params[:source] || 'index')
end
end
當用戶通過根路徑輸入時,它將呈現home
模板,否則將呈現index
模板。
對於當前方案,您可以使用此
在您的行動中使用
request.fullpath
這將捕獲當前的uri,您可以使用它來實現,也可以在rails 4中使用
request.original_url
獲取URL, 此問題詳細說明了用法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.