Ruby on rails Airbnb如何发送每篇文章?
我正在用RubyonRails创建一个网站,引用Airbnb,我发现很难创建以下URL结构 在这个URL中,似乎有一个文章资源在帮助下,所以767是文章的ID。此外,在ID之后,URL中还有页面的名称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
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
作为一个单词写入即可。