如何在视图Ruby on Rails中路由您的子文件夹?

任何人都可以说明如何路由您的子文件夹的.html.erb文件? 它是这样放置的:

view/pages/en/index.html.erb 

并且路由这我正在做route.rb上的事情

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

对于链接代码,我在标题上有这个

  

我得到的错误是

  Routing Error uninitialized constant Pages 

路线:

在此处输入图像描述

AFAIK,无法路由到视图。 您可以将URL路由到控制器的操作。 该操作负责呈现视图。

您可以使用命名空间路由将资源放在子文件夹中。

我想写的是@TuteC写的。 只需按照该链接进行操作,是的,您可以根据他的解释获得特定语言的内容。

命名空间将在子文件夹中组织您的代码和视图: 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 

我一直在努力解决这个问题,最后找到了一个简单的解决方案:

配置/ 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 

关于这一点最好的事情是它很简单,你可以无限期地扩展它。 如果您所做的只是渲染基本模板,则可以轻松清理视图文件夹。