我有一个家庭控制器,我计划只用于诸如aboutus,contactus或登陆页等页面。在路由文件中包含这个的最佳方法是什么我根本没有得到默认路由但是可以从网站的根目录中以/ [action]的形式访问每个操作。
例如:
xyz.com/aboutus should take me to home#aboutus
xyz.com/contactus should take me to home#contactus
等
答案 0 :(得分:3)
#config/routes.rb
resources :home, path: "", only: [] do
collection do
get :aboutus
get :contactus
end
end
通过
删除了循环@Sanket
这将为您的所有网页创建domain.com/aboutus
等
-
<强> DRY 强>
虽然这是你想要的,但让它运作起来的干扰方法是:
#config/routes.rb
resources :home, path: "", only: :show #-> domain.com/:id
这意味着您可以使用friendly_id
之类的宝石为您的页面创建一系列slug,如下所示:
#app/models/page.rb
class Page < ActiveRecord::Base
extend FriendlyId
friendly_id :title, use: [:slugged, :finders]
#fields
id | slug | title | body | created_at | updated_at
end
#app/controllers/home_controller.rb
def show
@page = Page.find params[:id]
end
如果您只想渲染没有模型的页面:
#app/controllers/home_controller.rb
def show
render "pages##{params[:id]}"
end
这将允许您以最干的方式使用domain.com/home/aboutus
之类的
-
<强>买者强>
一个很大的警告是,如果您要使用app-wide slugs,则需要将它们放在routes.rb
文件的底部(这样它们就不会干扰其他路线)< / p>
答案 1 :(得分:1)
你可以使用https://github.com/thoughtbot/high_voltage作为静态页面的好宝石。