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