簡體   English   中英

如何在Ruby on Rails視圖中路由子文件夾?

[英]how to route your sub-folder in views Ruby on Rails?

誰能為您介紹如何路由子文件夾的.html.erb文件? 放置如下:

view/pages/en/index.html.erb

並對此路由,我正在route.rb上執行以下操作

match ':lang/index', :to => 'pages/en#index'

對於鏈接代碼,我將其放在標題上

<%= link_to "Home", index_path %>

我得到的錯誤是

 Routing Error
 uninitialized constant Pages

路線:

在此處輸入圖片說明

命名空間將在子文件夾中組織您的代碼和視圖: http : //guides.rubyonrails.org/routing.html#controller-namespaces-and-routing

如果只需要以這種方式組織的views/pages文件夾,則可以在PagesController執行以下操作:

render "#{I18n.locale}/#{action_name}"

一個問題:為什么您要用view/pages/en/index.html.erb而不是view/pages/index.en.html.erb 那將開箱即用。

更新這就是route.rb的工作方式:-

match ':lang/index', :to => 'pages#index'

渲染到您的控制器上:

def index
  render "pages/en/index"
end

def about
  render "pages/#{params[:lang]}/about"
end

AFAIK,無法路由到視圖。 您可以將URL路由到控制器的操作。 該操作負責呈現視圖。

您可以使用命名空間路由將資源放在子文件夾中。

...

我想寫的已經由@TuteC編寫。 只需點擊該鏈接,是的,您可以按照他的解釋開箱即用。

我已經為此苦苦掙扎了一段時間,終於找到了一個簡單的解決方案:

config / routes.rb

get 'pages/:first/:second/:third' => 'pages#show'

然后在您的PagesController中

def show
    render "/pages/#{params[:first]}/#{params[:second]/#{params[:third]}"
end

然后,在您的視圖中它將呈現以下任何內容:

pages/index => pages/index.html.erb
pages/index/en => pages/index/en.html.erb
pages/foo/bar/hello-world => pages/foo/bar/hello_world.html.erb

最好的事情是它很簡單,您可以無限期擴展它。 如果您正在做的只是渲染基本模板,則可以輕松清理views文件夾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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