ruby-on-rails – 在Rails中带有可选参数的路由

我正在尝试设置一个看起来像这样的路线:acme.com/posts/:category /:status.两者:category和:status是可选的.我写了很多变化,但都没有奏效:

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路径,总是重定向到post #index.

最佳答案 您可以使用更多RESTful资源:posts(在config / routes.rb中)并在查询字符串中发送params.

使用该方法,所有参数都是可选的,您不限于使用预定义参数.

点赞