Определение маршрута для метода в рельсах 3 - PullRequest
0 голосов
/ 27 ноября 2011

Я новичок в Rails и в настоящее время использую Rails 3, поэтому, пожалуйста, потерпите меня.У меня есть базовое приложение, с базовым контроллером / моделью лесов, например Contacts.

Среди методов для Show / Edit и т. Д. Я добавил метод под названием newcontacts (я также добавил newcontacts.html.erb), который в конечном итоге покажет последние 5 импортированных контактов, но в данный момент я использую тот же код, который можно найти в базовом методе индекса контроллера (я собираюсь отфильтровать данные на более позднем этапе), метод вконтроллер -

def newcontacts

  @contacts = Contact.all

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

Я могу получить доступ к localhost: 3000 / contacts, который отображает действие метода индекса из контроллера контактов, но когда я пытаюсь получить доступ к этому методу (newcontacts), используя localhost: 3000 / contacts / newcontactsон возвращает ошибку

Couldn't find Contact with id=newcontacts

Я посмотрел на файл route.rb, так как считаю, что это то, что нужно отредактировать, и добавил следующую строку в rout.rb

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

но это работает только когда я звоню localhost: 3000 / newcontacts.

Так что мой вопрос, как я могу получить URL localhost: 3000 / contacts / newcontactsна работу?

Любая помощь будет отличной.

Ответы [ 2 ]

1 голос
/ 27 ноября 2011

Я думаю , что вы пытаетесь сделать, это добавить еще одно действие RESTful .

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
0 голосов
/ 27 ноября 2011

Попробуйте это в вашем файле rout.rb:

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

Это добавит новое действие для контроллера контактов.

...