Nat*_*tsu 1 ruby url routing ruby-on-rails url-routing
我正在使用Ruby on Rails创建一个网站,引用Airbnb,我发现很难制作以下网址结构.
https://www.airbnb.com/help/article/767/what-is-the-resolution-center
在此URL中,似乎有一个文章资源在帮助下,因此767是文章的ID.此外,在ID之后,URL中有页面的名称.
scope '/help' do
resources :articles
end
Run Code Online (Sandbox Code Playgroud)
通过这样做,我能够路由到这一部分.
/帮助/用品/ 'PAGE_ID'
但我不知道该怎么做.
我生成了文章模型(标题:字符串,内容:文本),我猜测每篇文章(标题和内容)都是根据id显示的.
这是我的问题.
谢谢.
告诉Rails接受URL下的请求,/help/article/767/what-is-the-resolution-center当你使用get而不是嵌套时,实际上非常容易resources:
get '/help/article/:id/:slug', to: 'help_atricles#show', as: 'help_article'
Run Code Online (Sandbox Code Playgroud)
鉴于上述的URL,滑轨会提取id和slug从URL和将请求路由到所述show的方法HelpArticlesController.
该控制器方法可以简单如下:
def show
@article = HelpArticle.find(params[:id])
end
Run Code Online (Sandbox Code Playgroud)
要构建此类URL,您可以使用help_article_path该as: 'help_article'部件定义的辅助方法:
<%= link_to(
@article.title,
help_article_path(
id: @article.id,
slug: @article.title.parameterize
)
) %>
Run Code Online (Sandbox Code Playgroud)
顺便说一句.我没有使用slugURL 的一部分,因为我觉得它使URL看起来更好并且可能与SEO相关,但从应用程序的角度来看它感觉无用.slug如果您不想使用浏览器的区域设置,则可能需要使用该部件来标识应显示文章的区域设置.
| 归档时间: |
|
| 查看次数: |
107 次 |
| 最近记录: |