[英]How to render error messages for a json form in Rails
我试图在 ajax 表单上显示提交失败的错误消息。 我之前没有走上 ajax 表单的道路,也找不到关于如何获取错误消息以显示表单因任何原因无法保存数据的可靠最新指南。
我在format.json { render :json => { :errors => @key.errors.full_messages }, :status => 422 }
有format.json { render :json => { :errors => @key.errors.full_messages }, :status => 422 }
提交失败的表单,如下所示。 但是我不知道要使用什么 JS 或 coffeescript,因此会显示错误消息。
category_item_keys 控制器
def new
@guide = Guide.friendly.find params[:guide_id]
@category = Category.friendly.find params[:category_id]
@key = @category.category_item_keys.new
end
def create
@guide = Guide.friendly.find params[:guide_id]
@key = @category.category_item_keys.new key_params
@category = Category.friendly.find params[:category_id]
if @key.save
CategoryItemKey.find(@key.id).update(submitted_by: current_user.id, approved_by: current_user.id, guide_id: @guide.id)
respond_to do |format|
format.html { redirect_to new_guide_category_category_item_key_path(@guide, @category)
flash[:success] = "Key added successfully!" }
format.json { render :json }
format.js
end
else
respond_to do |format|
format.html { render 'new' }
format.json { render :json => { :errors => @key.errors.full_messages }, :status => 422 }
format.js
end
end
end
def key_params
params.require(:category_item_key).permit(:name, :key_type)
end
新的.html.erb
<%= form_for([@guide, @category, @key], url: guide_category_category_item_keys_path, remote: true, :authenticity_token => true) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :name, "Key name" %>
<%= f.text_field :name %>
<%= f.select :key_type, [['Stat', 1], ['Attribute', 2], ['Image', 3], ['Text', 4]] %>
<%= f.submit "Next" %>
<% end %>
category_item_key.coffee
# No idea what is needed in here
我已经阅读了我能找到的所有帖子,以了解需要在 category_item_key.coffee 中添加什么内容,但它们都已经 3-5 岁了,而且无法正常工作。 我确定它没有那么复杂,但我对 JS 了解不多。
category_item_keys 控制器:
format.json { render :json => @key.errors, :status => 422 }
_save.js.erb
<% if @key.errors.any? %>
$("<%= j(render 'shared/error_messages') %> ").prependTo('#YoursFormId');
<% else %>
// do something when no errors
<% end %>
创建.js.erb,更新.js.erb
<%= render 'save' %>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.