我有一个远程表单,它基本上将两个表单一起提交。一个用于Address
另一个用于User
现在我想做的是用JSON渲染错误。
我可以像这样单独返回错误:
if current_user.errors.any? || !@address.save
respond_to do |format|
format.json { render json: @address.errors, status: :unprocessable_entity }
end
end
现在他们会在用户模型和地址上触发错误。如何将错误呈现为@address.errors
和current_user.errors
。我试图将它们合并为哈希值,但由于它们属于ActiveModel :: Errors,因此无法执行此操作。如果您检查错误,通常会返回错误:
#<ActiveModel::Errors:0x007fbe094edda0 @base=#<Address id: nil, street_address: "Lorem ipsum", city: nil, state: nil, zip_code: "0000", country: nil, user_id: 1, created_at: nil, updated_at: nil, latitude: 10.92876, longitude: 52.23023, trashed: false>, @messages={:zip_code=>["No zip code matches this"]}, @details={:zip_code=>[{:error=>:inclusion, :value=>"0000"}]}>
所以我想弄清楚的是,如果有办法将其合并为一个,那么我可以回复它。
答案 0 :(得分:1)
如下:
if current_user.errors.any? || !@address.save
respond_to do |format|
format.json { render json: {address_errors: @address.errors, current_user_errors: current_user.errors}, status: :unprocessable_entity }
end
end
现在你有一个json响应是一个带有2个条目的哈希:一个用于address_errors,一个用于current_user_errors。
答案 1 :(得分:0)
你可以试试这个:
format.json { render json: { @address.errors, @user.errors }, status: :unprocessable_entity }