2017-01-22 16 views
2

参考文献書式では、jsonを使用して著者を追加する著者作成フォームを作成します。respond_to format.html引数が少なすぎます

これは問題なく動作します。

ただし、著者がデータベースに追加されると、成功メッセージが表示されます。

これは私のコードです:

def create 
    @auteur = Auteur.new(params_auteur) 
    respond_to do |q| 
     if @auteur.save 
      format.html{ redirect_to @auteur, notice: 'Auteur added successfully.'} 
      format.js{} 
      format.json{ 
       render json: @auteur, status: :created, location: @auteur 
      } 
     else 
      format.html{ render action: "new"} 
      format.json{ render json: @auteur.errors, status: :unprocessable_entity} 
     end 
    end 
end 

その後、私はこのコードを含むファイルviews/auteurs/create.js.erb追加:私が取得エラーメッセージが右の(成功した)挿入した後に生成される

$("<%= escape_javascript(render @auteur) %>").appendTo(".bloque_ajoute_auteur"); 

をデータベースの新規作成者:

Completed 500 Internal Server Error in 10ms (ActiveRecord: 1.6ms) 
ArgumentError (too few arguments): 
app/controllers/administration/auteurs_controller.rb:23:in `format' 
app/controllers/administration/auteurs_controller.rb:23:in `block in create' 
app/controllers/administration/auteurs_controller.rb:21:in `create' 

ライン21は始まりですf respond_toブロック。ライン23はformat.html{ redirect_to @auteur, notice: 'Auteur ajouté.'}

である私は、私はかなり密接これに続いたと思った:http://guides.rubyonrails.org/working_with_javascript_in_rails.html#server-side-concerns

答えて

0

あなたのコードは、respond_toブロックに渡された引数を使用する代わりに、カーネルのformat instance methodを呼び出すことになります。

この方法では、このケースでは明らかに提供されていないより多くの引数が必要です。

問題を解決するには、引数名をqからformatに変更します。

3

それはrespond_to do |format|する必要があります。それが宣言されていないformatの最初のインスタンスに達するとすぐに失敗します。

+0

これは間違いありません。私の愚かな間違い。しかし、この機能では全くメッセージは返されません(サーバーログやFirefox開発ツールには何もありません)。 – thiebo

関連する問題