我正在使用序列化程序来格式化我的rails-api投影机的json响应。 我正在使用关注来格式化最终响应。 我的代码片段如下
entry_controller.rb
class EntriesController < ApplicationController
include Response
def index
@entries = @current_user.entries
json_response(@entries)
end
end
顾虑/ response.rb
module Response
def json_response(response, error = nil, message = 'Success', code = 200)
render json: {
code: code,
message: message,
error: error,
response: response
}
end
end
application_serializer.rb
class ApplicationSerializer < ActiveModel::Serializer
end
entry_serializer.rb
class EntrySerializer < ApplicationSerializer
attributes :title, :content, :is_encrypted, :entry_date
end
在 条目#index 中如果我使用 json_response(@条目) ,我的最终请求回复不是格式化,每个条目都在数据库中。相反,如果我使用render json: @entries
。我按照序列化程序获取。我想使用关注方法json_response(@entries)
和序列化程序。有人可以建议一种在通用方式中在关注方法中使用序列化器的方法,因为多个控制器使用相同的关注方法。
提前谢谢。
答案 0 :(得分:0)
与序列化程序参数相关的内容是您要自定义响应的内容。
class EntriesController < ApplicationController
include Response
def index
@entries = @current_user.entries
render json: @entries, serializer_params: { error: nil, message: "Success", code: 200}
end
end
class EntrySerializer < ApplicationSerializer
attributes :title, :content, :is_encrypted, :entry_date
params :error, :message, :code
def attributes
super.merge(:error, :message, :code)
end
end
答案 1 :(得分:0)
我不确定我是否完全理解您的问题,但如果给出哈希值,我不会相信render :json
递归调用to_json
,就像在这种情况下一样。因此,您可能会在关注中寻找类似的内容:
module Response
def json_response(response, error = nil, message = 'Success', code = 200)
render json: {
code: code,
message: message,
error: error,
response: response.to_json
}
end
end