ruby on rails路由用于非资源操作

时间:2013-03-02 06:19:31

标签: ruby-on-rails ruby ruby-on-rails-3

我是ruby on rails的新手。我已经有了这些路线

  namespace :swimming do resources :classschedules    end

现在我向这个控制器添加了一个新动作

class Swimming::ClassschedulesController < ApplicationController

  def date 
    @date = params[0]
  end
end

如何为此新操作添加路线?

我想打电话给游泳/课程安排/日期/ 2013-03-07。它将是一个单独的元素,而2013-03-07是我想在此操作中使用的参数。

2 个答案:

答案 0 :(得分:1)

如果您希望匹配/swimming/classcehdules/date/2012-12-03这样的网址,请尝试:

namespace :swimming do
  resources :classschedules do
    get 'date/:date', :action => 'date', :as => :date, :on => :collection,
                      :constraints => { :date => /\d{4}-\d{2}-\d{2}/ }
  end 
end

额外的:constraint是为了确保:date param符合预期的格式。在您的操作中,您可以获取日期:

def date
   @date = params[:date] # => "2012-12-03"
end

请查看http://guides.rubyonrails.org/routing.html了解有关路由的更多信息。

答案 1 :(得分:0)

namespace :swimming do 
  resources :classschedules do
    get 'date', :on => :member # or collection
  end
end

guides

中的更多信息