Mam dwa modele bloga i komentarz. Blog zawiera wiele komentarzy, komentarz może należeć tylko do jednego bloga.
Do wyświetlania interfejsu API podobnego blog / 2 / comment / 1
Muszę użyć następującego kodu wewnątrz kontrolera komentarzy
def show
@blog = Blog.find(params[:blog_id])
@comments = @blog.comments
@comment = @comments[params[:id].to_i - 1]
end
Czuję, że ten kod jest dość akward, zwłaszcza ten ostatni @comments[params[:id].to_i - 1]
. Muszę przekonwertować parametr id na liczbę całkowitą, a następnie zmienić na indeks tablicy na 0. Każdy proces refaktoryzacji może się tu zdarzyć
Odpowiedzi:
0 dla odpowiedzi № 1Czy masz na myśli, aby wyglądać bardziej "Rails"? Lubię to?
def show
@blog = Blog.find(params[:blog_id])
@comment = @blog.comments.find params[:id]
end
Zgodnie z komentarzem OP. Twoja transformacja jest niezbędny. Możesz jednak uniknąć ładowania całego zestawu komentarzy i brać tylko to, czego potrzebujesz.
@comment = @blog.comments.offset(params[:id].to_i - 1).limit(1)