我試圖設置一個如下所示的路由:acme.com/posts/:category/:status
。 :category
和:status
都是可選的。我寫了許多變化,但沒有工作:Rails中可選參數的路由
resources :posts do
match '(/:category)(/:status)', to: 'posts#index', as: 'filter', on: :collection
end
# Category Links
link_to "Questions", filter_posts_path(:questions)
link_to "Suggestions", filter_posts_path(:suggestions)
# Status Links
link_to "Published", filter_posts_path(params[:category], :published)
link_to "Draft", filter_posts_path(params[:category], :draft)
想法是通過類別能夠1)過濾器,2)過濾器的狀態,3)過濾器由兩個類別和狀態,如果兩者都可用。目前的設置也打破了我的/posts/new
路徑,總是重定向到posts#index
。
你有什麼不想只使用'資源特殊的原因:posts'並在查詢字符串中發送過濾參數? (例如,'acme.com/posts?category = foo&status = bar') – rthbound
我想要漂亮的URL,所以它出現'/ posts /:category /:status /'或至少'/ posts/category /:category/status /:status' – Mohamad