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

Ruby on rails Airbnb如何发送每篇文章?,ruby-on-rails,ruby,url,routing,url-routing,Ruby On Rails,Ruby,Url,Routing,Url Routing,我正在用RubyonRails创建一个网站,引用Airbnb,我发现很难创建以下URL结构 在这个URL中,似乎有一个文章资源在帮助下,所以767是文章的ID。此外,在ID之后,URL中还有页面的名称 scope '/help' do resources :articles end 通过这样做,我可以一直走到这一部分 /帮助/文章/“页面id” 但我不知道接下来该怎么办 我生成了文章模型(标题:字符串,内容:文本),我猜每个文章(标题和内容)都是根据id显示的 这是我的问题 Airb

我正在用RubyonRails创建一个网站,引用Airbnb,我发现很难创建以下URL结构

在这个URL中,似乎有一个文章资源在帮助下,所以767是文章的ID。此外,在ID之后,URL中还有页面的名称

scope '/help' do
  resources :articles
end
通过这样做,我可以一直走到这一部分

/帮助/文章/“页面id”

但我不知道接下来该怎么办

我生成了文章模型(标题:字符串,内容:文本),我猜每个文章(标题和内容)都是根据id显示的


这是我的问题

  • Airbnb route page_如何在文章ID之后命名
  • 在显示文章表中的标题和内容的情况下,如何放置超链接或使用I18n将内容国际化
  • 此外,请告诉我,如果我的猜测是错误的,在第一位,并告诉我如何Airbnb路线每篇文章


谢谢。

告诉Rails接受URL下的请求,比如
/help/article/767/what is the resolution center
,如果您使用
get
而不是嵌套的
资源,实际上非常容易:

get '/help/article/:id/:slug', to: 'help_atricles#show', as: 'help_article'
给定上述URL,Rails将从URL中提取
id
slug
,并将请求路由到
HelpArticlesController的
show
方法

该控制器方法可以简单到:

def show
  @article = HelpArticle.find(params[:id])
end
要构建这样的URL,您可以使用
帮助文章路径
助手方法,该方法由
定义为:“帮助文章”
部分:

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

了解更多有关此的信息


顺便说一句,我没有使用URL的
slug
部分,因为我觉得它让URL看起来更漂亮,可能与SEO相关,但从应用程序的角度来看,它感觉没用。如果您不想使用浏览器的区域设置,您可能需要使用
slug
部分来确定文章应该显示的区域设置。

告诉Rails接受URL下的请求,例如
/help/article/767/what is the resolution center
,如果您使用
get
而不是嵌套的
资源

get '/help/article/:id/:slug', to: 'help_atricles#show', as: 'help_article'
给定上述URL,Rails将从URL中提取
id
slug
,并将请求路由到
HelpArticlesController的
show
方法

该控制器方法可以简单到:

def show
  @article = HelpArticle.find(params[:id])
end
要构建这样的URL,您可以使用
帮助文章路径
助手方法,该方法由
定义为:“帮助文章”
部分:

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

了解更多有关此的信息


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

您可以使用gem您可以使用gem另一种常用方法是比较给定的
参数[:slug]
到实际的
段塞
,如果不匹配,则重定向到后者。这使得slug部分在访问资源时是可选的,但确保了URL的一致性。您好,非常感谢您的回答!!我试着做你写的(我做了文章通过,文章展示,而不是你写的,因为我已经有了文章控制器),我有这个错误。ActionView::Template::Error:未定义的局部变量或#的方法“article”应该修复在哪里?我想问题出在型号上,但我不太清楚。对不起,Ups。这是我的错。我更新了答案来解决这个问题。在视图中,您必须使用
@article
而不是只使用
article
好的,我这样做了,但我收到了另一个错误。语法错误,意外的“(”,应为“)”@article.title,@article\u路径(id:@article.id,slug:@article我的视图文件是这样的。“帮助中心我们能为您提供什么帮助?

处理文章前面的所有@。看起来在
@
和变量名称之间有空格。这是不正确的,只需删除空格并将
@article
作为一个词写入。另一个常用的方法是将给定的
参数[:slug]
与实际的
slug
进行比较,如果它们不匹配,则重定向到后者。这使得slug部分在访问资源时是可选的,但确保了URL的一致性。您好,非常感谢您的回答!!我尝试了您编写的内容(我做了文章通过,文章展示,而不是你写的,因为我已经有了文章控制器),我犯了这个错误。ActionView::Template::error:未定义的局部变量或方法'article'用于#我应该在哪里修复?我认为模型是问题所在,但我不知道确切原因。Ups,对不起。这是我的错。我更新了我的答案来修复它。在视图中,你必须使用
@article
而不是
article
好的但我收到另一个错误。语法错误,意外的“(”,应为“)”@article.title,@article\u path(id:@article.id,slug:@article我的视图文件是这样的。'Help Center我们如何帮助您?

处理文章前面的所有@。看起来在
@
和变量名称之间有空格。这是不正确的,只需删除空格并将
@article
作为一个单词写入即可。