这是我的第一个Rails项目,我正在尝试慢慢把它们拼凑起来。
当我尝试查看使用rails g controller <controller> <page>
生成的页面时,我发现自己要转到0.0.0.0:3000/controller/page.html
,如何配置它以便我的路由文件全局允许通过页面查看页面名称,而不是控制器/页面,如果不存在这种方式,那么我如何将controller/page.html
路由到/page.html
我环顾四周,并没有真正找到任何解释,也许我在寻找错误的地方?
答案 0 :(得分:4)
在config/routes.rb
:
get '/page' => 'controller#action'
如果您的控制器是:
class UsersController < ApplicationController
def something
end
end
然后config/routes.rb
将是:
get '/page' => 'users#something'
对于静态页面,您可能希望使用public
文件夹,您可以直接访问所有内容,例如public/qqqqqq.html
中可以访问localhost:3000/qqqqqq.html
答案 1 :(得分:2)
我们通过在path
方法中使用resources
参数来实现这一目标:
#config/routes.rb
resources :controller, path: ""
具体来说,你要做出类似的事情:
#config/routes.rb
resources :static_pages, path: "", only: [:index]
get :page
get :other_page
end
#app/controllers/your_controller.rb
def page
end
def other_page
end
这将为您提供没有控制器名称的路由。您必须在路线末尾定义此内容(因此其他路径首先出现)
显然这将成为更广泛的路线文件的一部分,所以如果它不直接工作,我们可以重构!
答案 2 :(得分:1)
听起来这是一个静态页面,所以你可以像juanpastas那样做,或者另一种选择是在你的app/views
目录下创建一个文件夹来保存这些页面。也许是这样的
app/views/static_pages/the_page.html.erb
然后在您的config/routes.rb
中添加:
match '/your_page_name', to: 'static_pages#the_page', via: :get