簡體   English   中英

如何在 Rails 中為 json 表單呈現錯誤消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM