Не удается создать URL-адрес, который ссылается на метод в моем контроллере

Как создать ссылку с помощью link_to, которая ссылается на метод в моем контроллере. Ссылка, которую я хочу создать, выглядит примерно так:

/встречи/10/контакты/2/отправить_приглашение

Метод send_invite находится в контроллере контактов. Я не уверен, какой следующий шаг, как настроить файл маршрутов. Я пробовал вложенные ресурсы, но пока не повезло. Кроме того, какую ссылку указать в link_to? Я пробовал различные комбинации, такие как send_invite_path, Meeting_contact_send_invite_path, но все выдает ошибку.

Мой файл маршрутов выглядит так:

resources :meetings do
    resources :contacts, :only => [:send_invite], :as => :send_invite
end

Но затем, когда я пытаюсь вызвать send_invite_path, это не работает.


person Allen    schedule 11.12.2010    source источник


Ответы (2)


расширяя ответ Остина. Это вложение в config/routes.rb

resources :meetings do
    resources :contacts do
      member do
        post :send_invite
      end
    end
  end

даст вам эти маршруты

 send_invite_meeting_contact POST   /meetings/:meeting_id/contacts/:id/send_invite(.:format) {:action=>"send_invite", :controller=>"contacts"}
                     meeting_contacts GET    /meetings/:meeting_id/contacts(.:format)                 {:action=>"index", :controller=>"contacts"}
                                      POST   /meetings/:meeting_id/contacts(.:format)                 {:action=>"create", :controller=>"contacts"}
                  new_meeting_contact GET    /meetings/:meeting_id/contacts/new(.:format)             {:action=>"new", :controller=>"contacts"}
                 edit_meeting_contact GET    /meetings/:meeting_id/contacts/:id/edit(.:format)        {:action=>"edit", :controller=>"contacts"}
                      meeting_contact GET    /meetings/:meeting_id/contacts/:id(.:format)             {:action=>"show", :controller=>"contacts"}
                                      PUT    /meetings/:meeting_id/contacts/:id(.:format)             {:action=>"update", :controller=>"contacts"}
                                      DELETE /meetings/:meeting_id/contacts/:id(.:format)             {:action=>"destroy", :controller=>"contacts"}
                             meetings GET    /meetings(.:format)                                      {:action=>"index", :controller=>"meetings"}
                                      POST   /meetings(.:format)                                      {:action=>"create", :controller=>"meetings"}
                          new_meeting GET    /meetings/new(.:format)                                  {:action=>"new", :controller=>"meetings"}
                         edit_meeting GET    /meetings/:id/edit(.:format)                             {:action=>"edit", :controller=>"meetings"}
                              meeting GET    /meetings/:id(.:format)                                  {:action=>"show", :controller=>"meetings"}
                                      PUT    /meetings/:id(.:format)                                  {:action=>"update", :controller=>"meetings"}
                                      DELETE /meetings/:id(.:format)                                  {:action=>"destroy", :controller=>"meetings"}
person Doon    schedule 11.12.2010

Вам нужно будет определить маршрут в вашем файле route.rb и настроить ваши маршруты так, чтобы они были вложенными. Что касается имени, вы также можете определить его в файле route.rb, используя :as => "some_name", что позволит вам использовать link_to some_name_path.

Для получения дополнительной информации о маршрутах: http://guides.rubyonrails.org/routing.html

В частности, для вложенных ресурсов: http://guides.rubyonrails.org/routing.html#nested-resources

person Austin Lin    schedule 11.12.2010