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