Rails 路由:无法使辅助路由功能正常工作

Rails Routing: can't get helper route function to work

我想不出让辅助路径起作用的魔法。我的用例是这样的:"mydomain/articles/some_slug" 用于带有显示操作的文章控制器。给定的 URL 完美运行。但我不知道如何让 rails' 助手为这种情况工作。

routes.rb:

  get '/articles/:slug',    to: 'articles#show', as: 'article'

   --- or ---

  get '/articles/:slug',    to: 'articles#show'

   --- or changing :slug to :id

rails 路线(这个和其他 --- 或 --- 条件的类似变化):

  articles GET    /articles/:slug(.:format)                 articles#show

我收到未定义的方法“path_to_article”错误。在这些条件下会发生此错误:

my.html.erb:

  <%= path_to_article(locals[:article]) %>

   --- or ---

  <%= path_to_article(id: locals[:article].slug) %>

   --- or ---

  <%= path_to_article(slug: locals[:article].slug) %>

然而,这段代码工作正常,但我不喜欢它,这正是我想要避免的:

<a href="/articles/<%= locals[:article].slug %>">

我也尝试过在可能的情况下使用复数和非复数组合,以及几乎所有我能想到或在网上找到的随机想法。最后,我似乎无法弄清楚如何让 rails 识别 'path_to_article()'。

Rails 5.0.2

感谢您的帮助!

您想使用:

articles_path(locals[:article])

articles_path(locals[:article].slug)

取决于您的设置方式

rails routes

returns :

  • The route name (if any)
  • The HTTP verb used (if the route doesn't respond to all verbs)
  • The URL pattern to match
  • The routing parameters for the route

see: http://guides.rubyonrails.org/routing.html#listing-existing-routes

基本上,您应该将 _path 附加到视图中的路由名称以调用路由助手。

在你的例子中,路由名称是 articles 所以辅助方法是 articles_path.