Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    chiamare rjs dopo validazione modello

    Ciao,
    vorrei chiamare un template rjs quando la validazione dei miei campi (name,description) fallisce in modo da poter aggiornare un div.
    Solo che quando la validazione non passa nei log ho:
    codice:
    ActiveRecord::RecordInvalid (Validation failed: Name can't be blank, Name is too
     short (minimum is 3 characters), Description can't be blank):
    e non c'è verso di chiamare create.rjs. Sotto il mio modello, controller a rjs.
    Qualche aiuto?

    model
    codice:
    class Container < ActiveRecord::Base
    	validates_presence_of     :name
        validates_length_of       :name,    :within => 3..40
    	validates_presence_of     :description
    end
    controller
    codice:
    class ContainersController < ApplicationController
    
    	def create
    	
    		description = params[:gallery_description]
    		name = params[:gallery_name]
    		user_guest_id = params[:user_id]
    		
    
    		
    		respond_to do |format|
    	
    			container = Container.create! :name => name, :description => description, :user_guest_id =>user_guest_id, :user_id => current_user
    
    			format.js { render :action => 'create.rjs' }
    		end
    	end
    end
    create.rjs
    codice:
    page.replace_html 'error_msg_gallery', error_messages_for(:container)
    thx

  2. #2
    Cattura l'eccezione ActiveRecord::RecordInvalid e fai in quel caso il render dell'azione con formato rjs.

    Inoltre ti sconsiglio di usare create! ma usa new + save!
    In questo modo se il salvataggio non va a buon fine avrai comunque l'oggetto valorizzato (invalido) da poter riutilizzare nel render.

  3. #3
    ho seguito i tuoi consigli e ora ottengo il risultato voluto! Grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.