如何最好地使用批量数据json在rails中渲染?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何最好地使用批量数据json在rails中渲染?相关的知识,希望对你有一定的参考价值。
我有一个重定向到host_calendar_path的create方法。但是这可能是最好的方式,这样我就可以使用rv_date而不是单个rv_date来呈现json响应。
def create
start_date = Date.parse(rv_date_params[:start_date])
end_date = Date.parse(rv_date_params[:end_date])
(start_date..end_date).each do |day|
rv_date = RvDate.where(rv_id: rv_date_params[:rv_id], start_date: day)
if rv_date.present?
rv_date.update_all(price: rv_date_params[:price], status: rv_date_params[:status])
else
rv_date = RvDate.create(rv_id: rv_date_params[:rv_id], start_date: day, end_date: day, price: rv_date_params[:price], status: rv_date_params[:status])
end
end
redirect_to host_calendar_path(rv_id: rv_date_params[:rv_id])
end
将那些存储到数组并将rv_date作为数组发送是一个很好的解决方案吗?例如:
def create
start_date = Date.parse(rv_date_params[:start_date])
end_date = Date.parse(rv_date_params[:end_date])
rv_dates = []
(start_date..end_date).each do |day|
@rv_date = RvDate.where(rv_id: rv_date_params[:rv_id], start_date: day)
if @rv_date.present?
@rv_date.update_all(price: rv_date_params[:price], status: rv_date_params[:status])
else
@rv_date = RvDate.create(rv_id: rv_date_params[:rv_id], start_date: day, end_date: day, price: rv_date_params[:price], status: rv_date_params[:status])
end
rv_dates << @rv_date
end
# redirect_to host_calendar_path(rv_id: rv_date_params[:rv_id])
render json: rv_dates: rv_dates
end
答案
这可行,是的。理想情况下,您将创建一个名为EventSeries的新记录,并拥有在EventSeries中创建事件实例的所有逻辑。
你最终会得到像这样的东西
post "/event_series.json", params: {start_date: some_date, end_date: some_date}
然后,event_series_controller在哪里:
def create
@event_series = EventSeries.new(event_series_params)
if @event_series.save
render json: @event_series
end
end
然后,在EventSeries类中:
has_many :events
before_create :prepare_events
def prepare_events
(start_date..end_date).each do |day|
... code to manage events creation ...
end
end
以上是关于如何最好地使用批量数据json在rails中渲染?的主要内容,如果未能解决你的问题,请参考以下文章