繁体   English   中英

为什么Rails无法识别路线

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM