在rails 3中定义方法的路由

时间:2011-11-27 17:49:58

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

我是Rails的新手,目前正在使用Rails 3,所以请耐心等待。我有一个基本的应用程序,带有基本的脚手架控制器/模型,例如Contacts。

在显示/编辑等方法中..我添加了一个名为newcontacts的方法(我还添加了一个newcontacts.html.erb),它最终将显示导入的最后5个联系人,但目前我正在使用可以在控制器的基本索引方法中找到相同的代码(我打算稍后过滤数据),控制器中的方法是 -

def newcontacts

  @contacts = Contact.all

  respond_to do |format|
    format.html # index.html.erb
  end
end

我可以访问localhost:3000 / contacts,它显示来自联系人控制器的索引方法操作,但是当我尝试使用localhost:3000 / contacts / newcontacts访问此方法(newcontacts)时,它会返回错误

Couldn't find Contact with id=newcontacts

我查看了routes.rb文件,因为我认为这是需要编辑的内容,并已将以下行添加到routes.rb

match 'newcontacts', :to => 'contacts#newcontacts'

但这只适用于我调用localhost:3000 / newcontacts。

所以我的问题是,如何让网址localhost:3000 / contacts / newcontacts工作?

任何帮助都会很棒。

2 个答案:

答案 0 :(得分:1)

认为你要做的是add another RESTful action

resources :contacts do
  # This will map to /contacts/newcontacts
  get 'newcontacts', :on => :collection # Or (not and; use only one of these)...

  # This will map to /contacts/:id/newcontacts
  get 'newcontacts', :on => :member     # ... if you want to pass in a contact id.
end

答案 1 :(得分:0)

在routes.rb文件中尝试此操作:

resources :contacts do
  member do
    put 'newcontacts'
  end
end

这将为联系人控制器添加新操作。

相关问题