Rails 3路由有或没有:id

tha*_*guy 4 routes ruby-on-rails ruby-on-rails-3

有没有办法让路线允许:id或者nil

例如:

match 'product_specs/:id' => 'home#product_specs', 
      :as => :product_specs, 
      :via => :get
Run Code Online (Sandbox Code Playgroud)

把它id作为一个参数.但是我也想传递一个这样的空参数,product_specs_path()以便我也可以选择加载我的所有记录.

是否有可以达到此目的的路线匹配?

Dev*_*n M 8

也许如果你使用可选参数

# Routes
match 'product_specs/(:id)' => 'home#product_specs'

# Controller
def product_specs
  if params[:id].nil?
    product_specs = ProductSpecs.all()
  else
    product_specs = ProductSpecs.find(params[:id])
  end
Run Code Online (Sandbox Code Playgroud)

会有类似的东西吗?