2017-02-13 3 views
0

「skip_before_filter:verify_authenticity_token」とかそういうものがあれば、このエラーは表示されませんが、ページは自動的にリフレッシュされます。私はそれがリフレッシュされることを望んでいません。私はレールが新しく、この問題に近づくのを知らないので、助けてください!Ruby on Rails:ActionController :: InvalidAuthenticityToken PageController#insert_table

は、これはこれは私のJS

$(document).ready(function() { 
$('#concat').click(function() { 
$('#contactform') 
    .formValidation({ 
    framework: 'bootstrap', 
    icon: { 
     valid: 'glyphicon glyphicon-ok', 
     invalid: 'glyphicon glyphicon-remove', 
     validating: 'glyphicon glyphicon-refresh' 
    }, 
    fields: { 
     prefix: { 
      validators: { 
       notEmpty: { 
        message: 'The prefix is required' 
       }, 
      } 
     }, 
      client: { 
      validators: { 
       notEmpty: { 
        message: 'The client is required' 
       }, 
      } 
     }      
    } 
    }); 
}); 
}); 

である私のHTML

<form id="contactform" method="post"> 
<div class="form-group"> 
<label class=" control-label">prefix</label> 
        <select class="form-control" id="prefix" name="prefix">    
         <option value=""></option> 
         <option value="tmp">tmp</option> 
         <option value="tbl">tbl</option> 
         <option value="ref">ref</option> 
         <option value="client">client</option> 
       </select><br> 

<label class=" control-label">client</label> 
       <select class="form-control" id="client" name="client"> 
         <option value=""></option> 
         <option value="kapow">kapow</option> 
         <option value="perfect_africa">perfect_africa</option> 
         <option value="earth_class_mail">earth_class_mail</option> 
         <option value="amzn_seller">amzn_seller</option> 
       </select> <br>     

</div> 
<div class="form-group"> 
<div class="col-xs-9 col-xs-offset-4"> 
    <input type="file" name="file" id="myFile"> 
       <div id="temp_display"></div><br> 
       <input type="hidden" name="filename" id="my_file_name" value="">   
    <button type="submit" class="btn btn-default" id="concat">Concat</button><br><br> 

</div> 
</div> 
</form> 

ですこれは私のコントローラである

class PageController < ApplicationController 

before_action :authenticate_user!, only: [:index] 

def home 
end 

def insert_table 
end 

def create_table 
    helpers.create_table 
end 

def index 
end 

end 

答えて

0

あなたはオフであるように見えるいくつかのことがあります。

  1. InvalidAuthenticityTokenエラー - POSTリクエストを使用してサーバーにデータを送信しますが、POSTおよびPUT操作では、レールで必要なパラメータauthenticity_tokenを渡さないため、これが表示されます。フォームを実際に提出したくない場合は、ここでそれを心配する必要はありません。

  2. ページが更新される理由は、submitボタンのデフォルトのclickイベントがフォームを送信するためです。あなたは

$('#concat').click(function (e) {e.preventDefault() ... })

イベントハンドラを調整する。これは、submitボタンのデフォルトの動作をオーバーライドします持っていることを防ぐために。

+0

@Kkulikovskisに感謝します。 –