0

私が取り組んでいる Rails アプリケーションでは、ビューを更新せずにコントローラーのインデックス メソッドを更新/リロードしたいと考えています。たとえば、これをインデックスとして持っているとしましょう:

def index
    @title =params[:title]   
end 

そしてhtml.erb:

<script>
function changeField() {
  var newTitle = "Alerts"
  $.ajax({
    url: 'index?title=' + newTitle,
    type: 'POST',
    contentType: 'application/json',
    data: '',
    dataType: 'script',
    headers: {
      'X-CSRF-Token': '<%= form_authenticity_token.to_s %>'
    },
  complete: function () {
    alert('<%=@title%>');
  }
  });
}
</script> 

<button type="button" onclick="changeField()"></button>

私が抱えている問題は、ビューの @title 変数をリロードしないため、新しいタイトルではなく元のタイトルを取得することです。

4

1 に答える 1

1

ページの読み込み中にアラート ('<%=@title%>') がアラート ('最初の値') に等しくなり、新しい値を設定した後、JavaScript コードをリロードできません。HTMLコードを見ると、最初の値は表示されますが、2番目の値は表示されません

このコードをコントローラーに追加できると思います

respond_to do |format|
  format.html # index.html.erb
  format.js { render :json { :title => params['title'] || @title }.to_json }
end

そしてjsコードに追加success: function(data) { alert(data['title']) }

于 2013-07-24T20:21:31.823 に答える