任何人都可以了解如何路由你的子文件夹的.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
路线:
答案 0 :(得分:3)
命名空间将在子文件夹中组织您的代码和视图: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
?那将是开箱即用的。
答案 1 :(得分:2)
<强>更新强> 这是它对route.rb的工作方式: -
match ':lang/index', :to => 'pages#index'
在控制器上渲染: -
def index
render "pages/en/index"
end
def about
render "pages/#{params[:lang]}/about"
end
答案 2 :(得分:1)
AFAIK,无法路由到视图。您可以将URL路由到控制器的操作。该操作负责呈现视图。
您可以使用命名空间路由将资源放在子文件夹中。
...
我想写的是@TuteC写的。只需按照该链接进行操作,是的,您可以根据他的解释获得特定于语言的内容。
答案 3 :(得分:0)
我已经为此苦苦挣扎了一段时间,终于找到了一个简单的解决方案:
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
关于此的最好的事情是它很简单,您可以无限期扩展它。如果您只是在渲染基本模板,则可以轻松清理view文件夹。