web-dev-qa-db-fra.com

Trop peu d'arguments

J'essaie de faire fonctionner Javascript dans mon Rails app.

Je souhaite que ma page d'index me permette de modifier des éléments individuels sur la page d'index, puis de recharger la page d'index lors de la modification.

Ma page index.html.erb ressemble à:

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

Dans mon index.js.erb j'ai:

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

et dans mon titulaires_contrôleur:

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

Quand je charge la page d'index, c'est bien. Dès que vous cliquez sur le bouton Modifier et qu'il envoie le formulaire, j'obtiens ce qui suit:

enter image description here

Mais si je reviens en arrière et actualise la page d'index, les modifications sont enregistrées. Qu'est-ce que je fais mal?

34
Noah Clark

Vous avez oublié d'écrire responds_to bloquer:

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

Mais je me méfie de votre index.html.erb, je ne pense pas que cela fonctionnera vraiment comme vous le pensez.

111
Matzi