/ / Rails: come posso interrogare le camere di uno specifico modello di hotel, ad esempio? Quali sono le specifiche URL / controller REST? - ruby-on-rails, resto, activerecord, model

Rails: come posso interrogare le camere di uno specifico modello di hotel, ad esempio? Quali sono le specifiche URL / controller REST? - ruby-on-rails, resto, activerecord, model

Sono un principiante in Ruby on Rails, l'ho guardato solo per il mese di aprile, cercando di creare un'API Rails backend per un'app iOS.

Ho creato un modello di backend molto semplice per aiutarmi ad imparare: la visita in hotel e il layout sono i miei 4 modelli.

Ho alcuni dati di seed nel DB, e ho Hotel e Room che rispondono con dati JSON.

/hotels.json restituisce una lista json di tutti i miei hotel. /rooms.json fa la stessa cosa per le stanze.

/hotels/3.json restituisce i dati json per l'hotel con ID 3. /rooms/3.json fa la stessa cosa per la room con id 3.

Ho costruito un'app per iOS che legge questi dati e la visualizza.

Quello che mi chiedo è ...

Come ottengo tutte le stanze per un hotel con ahotel_id specifico? Con ciò intendo l'URL / i parametri. Sono completamente noob, quindi so ben poco di tutto ciò che non ho imparato fino a questo punto. Quale URL ho bisogno? Nel mio modello Room ho un metodo definito come segue ...

def self.rooms_with_hotel_id(hotel_id)
self.where(hotel_id: hotel_id)
end

Ma quale URL devo accedere per ottenere una risposta del genere?

Ho impostato l'indice e lo spettacolo nel mio room_controllere hotels_controller. Tuttavia, non capisco bene come creare la connessione per le camere di un hotel specifico. /Hotels/3/room.json ha senso? Se sì, come posso configurarlo nel mio controller?

Grazie!

risposte:

0 per risposta № 1

hai bisogno di mettere il metodo nel tuo room_controller in questo modo

def anymethodname
@rooms = Rooms.where(hotel_id: params[:hotel_id])
respond_to do |format|
format.json { render :json => @rooms }
end
end

quindi quando visiti questo URL -> yourdomain.name/rooms/anymethodname?hotel_id=12 ti daranno tutte le camere con hotel_id = 12 in formato json