首页 > 解决方案 > Rails,没有控制器的帖子和页面的网址

问题描述

在我的 Rails 博客应用程序中,我有帖子和页面。我正在使用friendly_id gem。是否可以在没有控制器的情况下同时为帖子和页面提供干净的 URL?它们应该是这样的:

example.com/my-post example.com/my-page

谢谢你。

标签: ruby-on-rails

解决方案


当然可以,但是您需要非常小心,以避免页面和帖子之间出现重复的 slug。

路线.rb

Rails.application.routes.draw do
  get ':id', to: 'pages_posts#show', as: 'page_or_post'
end

pages_posts_controller.rb

class PicturesController < ApplicationController
  def show
    if @page = Page.friendly.find(params[:id])
      render 'pages/show'
    elsif @post = Post.friendly.find(params[:id])
      render 'posts/show'
    else
      raise ActiveRecord::RecordNotFound
    end
  end
end

*.html.erb

link_to 'link', page_or_post_path(id: object.slug)

推荐阅读