ruby-on-rails - Airbnb 如何发送每篇文章?

标签 ruby-on-rails ruby url routes url-routing

我正在使用 Ruby on Rails 制作一个网站,引用了 Airbnb,但我发现很难制作以下 URL 结构。

https://www.airbnb.com/help/article/767/what-is-the-resolution-center

在这个URL中,help下好像有文章资源,所以767就是文章的ID。此外,在 ID 之后,URL 中还有页面名称。

scope '/help' do
  resources :articles
end

通过这样做,我能够路由到这部分。

/help/articles/'page_id'

但我不知道从这里开始做什么。

我生成了文章模型(title:string, content:text),我猜每篇文章(title and content)都是根据id显示的。


这是我的问题。

  • Airbnb 如何在文章 ID 之后路由 page_name?
  • 如果显示文章表中的标题和内容,如何放置超链接或将内容国际化I18n?
  • 另外,如果我的猜测一开始就错了,请告诉我,并告诉我 Airbnb 如何安排每篇文章。

谢谢。

最佳答案

告诉 Rails 接受像 /help/article/767/what-is-the-resolution-center 这样的 URL 下的请求实际上很容易,当你使用 get 而不是嵌套的 resources:

get '/help/article/:id/:slug', to: 'help_atricles#show', as: 'help_article'

给定上述 URL,Rails 将从 URL 中提取 idslug 并将请求路由到 show 方法 HelpArticlesController

Controller 方法可以简单到:

def show
  @article = HelpArticle.find(params[:id])
end

要构建此类 URL,您可以使用 as: 'help_article' 部分定义的 help_article_path 辅助方法:

<%= link_to(
      @article.title, 
      help_article_path(
        id:   @article.id, 
        slug: @article.title.parameterize
      )
    ) %>

阅读更多相关信息 routing method in the Rails Guides

顺便说一句。我没有使用 URL 的 slug 部分,因为我觉得它使 URL 看起来更好并且可能与 SEO 相关,但从应用程序的角度来看它感觉毫无用处。如果您不想使用浏览器的区域设置,则可能需要使用 slug 部分来标识文章应显示的区域设置。

关于ruby-on-rails - Airbnb 如何发送每篇文章?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50869241/

相关文章:

ruby-on-rails - Rails4 : ActiveRecord. ..CollectionProxy: NoMethodError

ruby-on-rails - Mongoid中的模糊关系

ios - 如何使用 iTunes Affiliates Search API 查找特定艺术家的歌曲名称

android - 尝试使用位图从 Url 设置 ImageView

ruby - 如何反转 ruby​​ 1.9 中的矩阵对象?

javascript - 如何在 Jquery 中制作重定向页面?

ruby-on-rails - 使用有效的 access_token 时缺少 token 端点 URI

ruby-on-rails - 为什么Rails调用当前版本(4.2.0)中不存在的方法?

ruby - 打印作业编程未取消

ruby-on-rails - 仅回形针过程图像