1

Bir ajax formunda gönderilemedi için hata iletileri görüntülemeye çalışıyorum. Daha önce ajax formlarının yolunu aşmadım ve formun ne olursa olsun verileri kaydetmek için başarısız olduğunda gösterilecek hata mesajlarının nasıl alınacağına dair sağlam bir güncel rehber bulamıyorum.Rails'de bir json formu için hata iletileri nasıl oluşturulur

Kontrol cihazında format.json { render :json => { :errors => @key.errors.full_messages }, :status => 422 } denetleyicim var, aşağıda görüldüğü gibi gönderin. Ancak hata mesajlarının görüntülenebilmesi için hangi JS'nin veya coffeescript'inin bulunduğu hakkında hiçbir fikrim yok.

category_item_keys kontrolör

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 

new.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 

Ben neye ihtiyacı olduğunu görmek için bulabilirsiniz tüm mesajların üzerinde okudum category_item_key.coffee içinde gitmek ama hepsi 3-5 yaşında ve sadece işe yaramıyor. Eminim o kadar da karmaşık değil ama işe yarayabilmek için JS hakkında fazla bir şey bilmiyorum.

cevap

1

category_item_keys kontrolörü:

<%= render 'save' %> 
+0

teşekkür update.js.erb

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 %> 

create.js.erb, biraz daha sağlayabilir detay? new.html.erb’de ne yapılması gerekebileceği gibi. Dosyaları ekledim ve denetleyicideki satırı değiştirdim ve hiçbir şey yapmıyor – Rob