28

Sto cercando di far funzionare JavaScript nella mia app Rails.Troppo pochi argomenti

Desidero che la mia pagina indice consenta di modificare singoli elementi nella pagina dell'indice e quindi di ricaricare la pagina indice al momento della modifica.

La mia pagina index.html.erb assomiglia:

<div id="index"> 
<%= render 'index' %> 
</div> 

Nel mio index.js.erb ho:

$('#index').html("<%=j render 'index' %>"); 

e nel mio holders_controller:

def edit 
    holder = Holder.find(params[:id]) 
end 

def update 
    @holder = Holder.find(params[:id]) 
    if @holder.update_attributes(params[:holder]) 
    format.html { redirect_to holders_path } #, flash[:success] = "holder updated") 
    ## ^---Line 28 in error 
    format.js 
    else 
    render 'edit' 
    end 
end 

Quando carico la pagina indice va bene. Non appena clic sul pulsante Modifica e invia il modulo, ottengo il seguente:

enter image description here

Ma se vado indietro e aggiornare la pagina di indice, le modifiche vengono salvate. Che cosa sto facendo di sbagliato?

risposta

89

ti sei dimenticato di scrivere responds_to blocco:

def update 
    @holder = Holder.find(params[:id]) 
    if @holder.update_attributes(params[:holder]) 
    respond_to do |format| 
     format.html { redirect_to holders_path } #, flash[:success] = "holder updated") 
     format.js 
    end 
    else 
    render 'edit' 
    end 
end 

ma sono sospetti sulla tua index.html.erb, non credo che funzionerà veramente il modo di pensare.

+4

'responds_to do' – clyfe

+0

Giusto, grazie. :) – Matzi

+0

@Matzi Ho dovuto usare 'responds_to do | format |' per farlo funzionare. –

Problemi correlati