2017-06-04 3 views
0

データベース形式の電卓なしでレールにajaxを追加しようとしています。しかし、それは応答しないように縫う。それは私に204のコンテンツサーバーの答えを与えません。私はこの問題を解決しようとしていますが、私は立ち往生しています。私のJavaScriptの知識は非常に基本的なものなので、詳細な応答が非常に役立ちます。 AJAXがなければ、うまく動作し、すべてのテストに合格します。レールにajaxを追加データベースフォームの計算なし

電卓コントローラ

class InterestCalculatorController 
    def new   
    respond_to do |format| 
     format.html { render 'index.html.erb' } 
     format.js 
    end 

    # If accepted parameter is integer, then it shows in view as 5, when it 
    # is float, it shows as 5.1 
    @first_0 = params[:a_0].to_f % 1 != 0 ? params[:a_0].to_f : params[:a_0].to_i 
    @second_0 = params[:b_0].to_f % 1 != 0 ? params[:b_0].to_f : params[:b_0].to_i 

    # How many percent is number from the number 
    number_to_number(@first_0, @second_0) 

private 

    def number_to_number(a = 0, b = 0) 
    # If the first number is zero, it sends 0% answer. If the second number is zero 
    # and the first number is nonzero, it sends infinity. Otherwise simple formula calculation. 
    if a.zero? 
     @result_0 = 0 
    elsif b.zero? 
     @result_0 = "infinity" 
    else 
     @result_0 = a.to_f/b.to_f * 100 
    end 
    end 
end 

index.js.erb

document.getElementById("answer_0").innerHTML = <%= @result_0 %> 

ビュー

<h1>Interest Calculator</h1> 

<div id="interest_calculator_main"> 
    <div id="interest_calculator"> 
    <%= form_for :interest_calculator, url: { action: :new }, method: :get, remote: true do |f| %> 
     <p>Сколько % составляет число</p> 
     <%= number_field_tag :a_0, params[:a_0], step: :any, id: "first_number_0" %> 
     <p>от числа</p> 
     <%= number_field_tag :b_0, params[:b_0], step: :any, id: "second_number_0" %> 
     <%= f.submit 'Calculate!', id: "number_to_number" %> 
    <% end %> 

    <% unless @result_0.nil? %> 
     <p>Number <%= @first_0 %> from number <%= @second_0 %> = <label id="answer_0">%</label></p> 
    <% end %> 
    </div> 
</div> 

答えて

2

あなたのフォームがnewアクションに提出されているが、あなたは持っているindex.html.erbそのアクションのテンプレートはありません(つまり、new.js.erb)、サーバーのログに次のように表示されるはず応答、:

InterestCalculatorController#が見つかりませんテンプレート新しい

new.js.erbindex.js.erbの名前を変更していない、とあなたは、もはやそのエラーを取得します。また


(このエラーに関連していない)、あなたは今new.js.erbファイルに"<%= @result_0 %>"<%= @result_0 %>を変更するwan'tことがあります。@result_0が設定されている場合、それ以外の場合は、コードが別のエラーがスローされます

document.getElementById("answer_0").innerHTML = "<%= @result_0 %>" 

"infinity"

+0

名前を変更した後、別のエラーが表示されます - 304は変更されていません –

+0

@KirillZhuravlovサーバーログからエラーを表示できますか? – Gerry

+0

私のレールコンソールにエラーは表示されませんが、mozillaが304エラーを送信し、テンプレートにresult_0答えがありません。 –

関連する問題