Rails路由:无法获取辅助路由功能

时间:2017-03-27 23:31:01

标签: ruby-on-rails routes helpers

我无法弄清楚让辅助路径发挥作用的魔力。我的用例是:“mydomain / articles / some_slug”用于带有show动作的文章控制器。给定的URL完美无缺。但我无法弄清楚如何让rails的助手适用于这种情况。

routes.rb中:

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

   --- or ---

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

   --- or changing :slug to :id

铁路路线(此类及其他---或---条件的类似变化):

  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 %>">

我也试过复数和非插图组合,我可以和几乎任何其他随机的想法,我可以想出或在网上找到。最后,我似乎无法弄清楚如何将轨道识别为'path_to_article()'。

Rails 5.0.2

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您想使用:

articles_path(locals[:article])

articles_path(locals[:article].slug)

取决于你设置的方式

答案 1 :(得分:0)

rails routes

返回:

  
      
  • 路线名称(如果有)
  •   
  • 使用的HTTP动词(如果路由不响应所有动词)
  •   
  • 要匹配的网址格式
  •   
  • 路线的路线参数
  •   
     

请参阅:   http://guides.rubyonrails.org/routing.html#listing-existing-routes

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

在您的情况下,路由名称是 articles ,因此帮助方法是 articles_path