簡體   English   中英

Rails 4-如何基於當前路徑顯示同一控制器動作的不同視圖?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM