在Ruby on Rails框架中,路由是将特定的URL映射到特定的控制器和操作的过程。默认情况下,Rails基于资源的ID进行路由,但是也可以基于其他属性进行路由。
例如,如果你有一个名为Post
的资源,你可以将URL映射到特定的Post
对象,而不是基于ID。这可以通过在路由文件中定义路由规则来实现。例如,你可以使用以下代码将URL映射到基于slug
属性的Post
对象:
get 'posts/:slug' => 'posts#show', as: :post
在这个例子中,:slug
是一个占位符,它将被实际的URL中的值替换。as: :post
定义了一个名为post_path
的路径辅助方法,可以在视图和控制器中使用。
在控制器中,你可以使用params[:slug]
来获取URL中的slug
值,并使用它来查找相应的Post
对象。例如:
class PostsController< ApplicationController
def show
@post = Post.find_by(slug: params[:slug])
end
end
这样,你就可以使用基于slug
属性的URL来访问特定的Post
对象,而不是基于ID。
总之,Rails默认基于ID进行路由,但是你可以通过自定义路由规则来基于其他属性进行路由。这可以让你的URL更加易于理解和记忆,同时也可以提高SEO效果。