Suponha que você tenha um recurso aninhado:
resources :photos do
resources :likes, only: [:create, :destroy]
end
Digamos que, em sua visualização, clicar em um botão de curtir de uma foto acione uma
solicitação AJAX para o LikesController
. <! – more -> A solicitação é create
semelhante se
o usuário ainda não curtiu a foto ou destroy
é. Os urls devem ser assim
:
Verbo | Ação | Caminho
post
| create
| /photos/:photo_id/likes
delete
| destroy
|/photos/:photo_id/like/:id
Nesse caso, você precisa construir uma solicitação em suas especificações que tenha as
seguintes características:
- ser uma solicitação AJAX;
- ser um pedido
POST
ouDELETE
; - conter a identificação com foto;
- conter o id semelhante no caso de
destroy
.
Portanto, as create
solicitações serão mais ou menos assim:
xhr :post, :create, photo_id: photo.id
Onde:
xhr
dizRSpec
para fazer uma solicitação AJAX;:post
é o verbo do pedido;:create
é a ação do controlador;photo_id
é o id da foto em que o like deve ser criado. Isso pressupõe que você fabricou uma foto e a atribuiu à variável de instânciaphoto
.
A destroy
solicitação será semelhante, mas você também deve fornecer o id:
xhr :delete, :destroy, photo_id: photo.id, id: like.id
Novamente, assume que você fabricou um semelhante e o atribuiu like
.