forked from OpenNeo/impress
Emi Matchu
c5cd1f2f3d
The alt styles controller is the one place we use this right now, but I'm planning to generalize this to loading appearances during item search, too! I also add more `only` fields to the alt styles `as_json` call, because idk it feels like good practice to both 1) say what we need in this endpoint, rather than rely on default behavior upstream, and 2) to avoid leaking fields we didn't realize were on there. (And also to preserve bandwidth, too!)
33 lines
928 B
Ruby
33 lines
928 B
Ruby
class AltStylesController < ApplicationController
|
|
def index
|
|
@alt_styles = AltStyle.includes(:species, :color, :swf_assets).
|
|
order(:species_id, :color_id)
|
|
|
|
if params[:species_id]
|
|
@species = Species.find(params[:species_id])
|
|
@alt_styles = @alt_styles.merge(@species.alt_styles)
|
|
end
|
|
|
|
# We're going to link to the HTML5 image URL, so make sure we have all the
|
|
# manifests ready!
|
|
SwfAsset.preload_manifests @alt_styles.map(&:swf_assets).flatten
|
|
|
|
respond_to do |format|
|
|
format.html { render }
|
|
format.json {
|
|
render json: @alt_styles.includes(swf_assets: [:zone]).as_json(
|
|
only: [:id, :species_id, :color_id, :body_id, :series_name,
|
|
:adjective_name, :thumbnail_url],
|
|
include: {
|
|
swf_assets: {
|
|
only: [:id, :body_id],
|
|
include: [:zone],
|
|
methods: [:urls],
|
|
}
|
|
},
|
|
methods: [:series_name, :adjective_name, :thumbnail_url],
|
|
)
|
|
}
|
|
end
|
|
end
|
|
end
|