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.
我想不出让辅助路径起作用的魔法。我的用例是这样的:"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.