Ruby on rails Rails将匹配要素值转换为路径的方法

Ruby on rails Rails将匹配要素值转换为路径的方法,ruby-on-rails,Ruby On Rails,我的第一个项目中有一段routes.rb代码: match '/signup', to: 'users#new' match '/signin', to: 'sessions#new' 我可以使用这个routes.rb使用“注册路径”和“登录路径”。我的第二个项目中有以下routes.rb代码: resources :places, only: [:index] match '/places/by_type/:id', to: 'places#filter' 我希望能够使

我的第一个项目中有一段routes.rb代码:

  match '/signup',  to: 'users#new'
  match '/signin',  to: 'sessions#new'
我可以使用这个routes.rb使用“注册路径”和“登录路径”。我的第二个项目中有以下routes.rb代码:

  resources :places, only: [:index]
  match '/places/by_type/:id', to: 'places#filter'
我希望能够使用“按类型放置路径”,但我错了。请告诉我,为什么在第一种情况下会自动构建路径?为什么我必须在第二种情况下使用“as”结构?谢谢,我找到了。只要路径没有任何非单词字符(例如“:”),它就会自动填写:as参数

这就是您需要对:as参数执行的操作:

match '/places/by_type/:id', to: 'places#filter', as: 'places_by_type'
places_by_type_path(id: my_id)

您的路线错误,请坚持休息原则以保持应用程序干净:

resources :places, only: [:index] do
  member do
    get :by_type, action: :filter #, as: 'a_name' if needed
  end
end
这样你就有了
/places/:id/by_type


使用
rake routes
检查命名路由,如果需要,使用
as
选项

我不知道为什么,但它似乎是:id参数。试试这个:

match '/places/by_type/', to: 'places#filter'
并传递一个参数:

match '/places/by_type/:id', to: 'places#filter', as: 'places_by_type'
places_by_type_path(id: my_id)

我知道。我不明白为什么在第一种情况下不使用“as”自动创建路径当params出现在游戏中时,会出现差异