Qai*_*ali 0 routes ruby-on-rails
我有一个家庭控制器,我打算仅将其用于“关于我们”、“联系我们”或“登陆页面”等页面。将其包含在路线文件中的最佳方法是什么,我根本没有获得默认路线,但确实获得了从站点根目录以 /[action] 的形式访问每个操作。
例如:
xyz.com/aboutus should take me to home#aboutus
xyz.com/contactus should take me to home#contactus
Run Code Online (Sandbox Code Playgroud)
ETC。
#config/routes.rb
resources :home, path: "", only: [] do
collection do
get :aboutus
get :contactus
end
end
Run Code Online (Sandbox Code Playgroud)
循环被删除
@Sanket
这将为domain.com/aboutus您的所有页面创建等
--
干燥
尽管这是您想要的,但让它发挥作用的更干燥的方法是执行以下操作:
#config/routes.rb
resources :home, path: "", only: :show #-> domain.com/:id
Run Code Online (Sandbox Code Playgroud)
这意味着您可以使用 gem 为friendly_id您的页面创建一系列 slugs,如下所示:
#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
Run Code Online (Sandbox Code Playgroud)
如果您只想渲染没有模型的页面:
#app/controllers/home_controller.rb
def show
render "pages##{params[:id]}"
end
Run Code Online (Sandbox Code Playgroud)
domain.com/home/aboutus这将允许您以最干燥的方式使用类似的东西
--
警告
一个重要的警告是,如果您要使用应用程序范围的 slugs,您需要将它们放在routes.rb文件的底部(这样它们就不会干扰其他路由)
| 归档时间: |
|
| 查看次数: |
999 次 |
| 最近记录: |