-1

私のウェブページにデータベースのデータを表示するJavaScriptがあります。また、ユーザーがクリックすると、コントローラーでロジックが発生し、表示されるデータを変更するボタンがあります。ただし、ボタンをクリックした瞬間には何も起こりません(ページはリロードされません)。設定を手伝ってもらえますか?これが私がこれまでに持っているものです:

コントローラ:

class QtlsController < ApplicationController
 require 'json'
 require 'uri'
 $rollback = nil
 def index
   logger.debug "\nrollback is: #{$rollback}\n"
   render "index"
 end
 def rollback
   $rollback = params[:version].gsub(/"/,'')
   redirect_to :action => :index
 end
end

見る:

  <%- if $rollback.nil? %>
     generates one type of table
  <%- else %>
     generates another type of table
  <%- end %>
  ...some other logic and buttons etc...
  jQuery(function() {
            jQuery( "#rollback").button();
            jQuery( "#rollback").click(function() {
                    var version = getSelectedText('version_selector');
                    jQuery.ajax({
                            type: "POST",
                            headers: {
                                    'X-Transaction': 'POST Example',
                                    'X-CSRF-Token': jQuery('meta[name="csrftoken"]').attr('content')
                            },
                            url: "/qtls/rollback",
                            data: {version: JSON.stringify(version) },
                            dataType: 'json',
                            sucess: function() { alert("Success! Rollbacked"); }
                    });
            });

ページに移動したときとロールバックボタンをクリックしたときのログファイルの内容は次のとおりです。

 Started GET "/qtls" for 10.64.229.59 at Tue Jul 17 16:48:52 -0500 2012
 Processing by QtlsController#index as HTML
 rollback is: 
 ROLLBACK IS NIL!!!
   Qtl Load (2.0ms)  SELECT `qtls`.* FROM `qtls` 
   Rendered qtls/index.html.erb within layouts/application (404.8ms)
   Rendered shared/_user_nav.html.erb (1.3ms)
   Rendered shared/_nav.html.erb (1.3ms)
   Rendered shared/_footer.html.erb (0.6ms)
 Completed 200 OK in 544ms (Views: 540.9ms | ActiveRecord: 2.0ms)
 Started POST "/qtls/rollback" for 10.64.229.59 at Tue Jul 17 16:48:57 -0500 2012
 Processing by QtlsController#rollback as JSON
   Parameters: {"version"=>"\"test1\""}
 Redirected to http://10.10.136.244:4000/qtls
 Completed 302 Found in 3ms (ActiveRecord: 0.0ms)
 Started GET "/qtls" for 10.64.229.59 at Tue Jul 17 16:48:58 -0500 2012
 Processing by QtlsController#index as JSON
 rollback is: test1
   Rendered qtls/index.html.erb within layouts/application (37.7ms)
   Rendered shared/_user_nav.html.erb (3.3ms)
   Rendered shared/_nav.html.erb (4.3ms)
   Rendered shared/_footer.html.erb (2.0ms)
 Completed 200 OK in 99ms (Views: 97.4ms | ActiveRecord: 0.0ms)
4

1 に答える 1

1

$rollback!のようなグローバル変数を使用するのは本当に悪いスタイルです。

ユーザーデータを保存する場合は、セッションオブジェクトを使用します。

jquery-rails gemを使用してビューでjQueryと統合してから:remote => :true、フォームでを使用して、railsがフォーム送信を処理できるようにします。

于 2012-07-18T21:01:25.513 に答える