
[英]Why won't rails recognize this route? (What Am I Doing Wrong? Making a Click Counter)
[英]Why Rails dont recognize route
我在routes.rb中
get '/cities/:city/:section' => 'cities#show', as: 'city_section_slug'
get '/cities/:city/:section/:subsection' => 'cities#show', as: 'city_subsection_slug', :constraints => { :subsection => /[^\/]*/ }
耙显示这些路线
city_section_slug GET (/:locale)/cities/:city_id/:section(.:format) cities#show {:locale=>/ru|en/}
city_subsection_slug GET (/:locale)/cities/:city_id/:section/:subsection(.:format) cities#show {:subsection=>/[^\/]*/, :locale=>/ru|en/}
但是当我尝试创建链接时:
= link_to city_subsection_slug_path(@city,section.alias, subsection.alias)
IV出现这样的错误:
ActionController::RoutingError (No route matches {:controller=>"cities", :action=>"show", :locale=>:ru, :city=>#<City id: 42, name: "City">, :section=>"events", :subsection=>"sobytiya/ya-ochevidets"}):
有什么想法我错了吗?
#config/routes.rb
resources :cities, only: [] do
get ":section", action: :show, as: :city_section_slug #-> url.com/cities/:city_id/:section
get ":section/*subsection", action: :show, as: :city_subsection_slug #-> url.com/cities/:city_id/:section/:subsection
end
对应的链接:
<%= link_to "x", city_section_slug_path(@city, section.alias) %>
<%= link_to "x", city_subsection_slug_path(@city, section.alias, subsection.alias) %>
通配符
如果您希望将sobytiya/ya-ochevidets
发送到您的subsection
路径,则最好使用通配符路由
原因是您对小节参数的限制。 您指定了它可以是任何东西,只要它不包含/
字符。 您的小节确实为它加了字,因此出现错误。 如果要允许/
字符,请执行以下操作:
get '/cities/:city/:section/:subsection' => 'cities#show',
as: 'city_subsection_slug',
constraints: { :subsection => /^[a-z0-9_\/]+$/ }
最终,您可以使用glob参数:
get '/cities/:city/:section/*subsection' => 'cities#show',
as: 'city_subsection_slug',
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.