0

Rails アプリから ajax を使用してメソッドを呼び出そうとしています。そのメソッドが成功したか、別の関数を呼び出したかにかかわらず、ajax を介して情報を取得する方法があるかどうかを知りたいです。

$.ajax({ 
  type: "GET/POST", // which ever will be better 
  url: "",
  success: function(form) {
    //something i can put here to call a method in rails to retrieve variables from rails
  },
  error: function() {
    //some code
  }
});

これを機能させるには、コントローラーに何をしなければなりませんか?

def call_sms
  @text_number = params[:phone_number]
  @text_message     = params[:text_message].to_s
  @sms = ShortMessagingService.new

  if @sms.send(@text_number, @text_message)       
    @sms_message = @sms.sent?

    respond_to do |format|
      format.js {render :nothing => true}
    end
  else 
    false
  end
end
4

2 に答える 2

1

何を達成しようとしているのか正確にはわかりませんが、一般的に言うと、Rails で Ajax リクエストを処理する良い方法は、到着時に実行される JavaScript を送り返すことです。たとえば、コントローラーを次のように変更した場合:

def call_sms
  @text_number = params[:phone_number]
  @text_message     = params[:text_message].to_s
  @sms = ShortMessagingService.new

  @sms.send(@text_number, @text_message)       

  respond_to do |format|
    format.js
  end
end

対応するビュー call_sms.js.erb を作成します

<% if @sms.sent? %>
  alert("All is well!");
<% else %>
  alert("Something's wrong.");
<% end %>

サーバーからの応答がブラウザに届くと、警告ボックスがポップアップします。

successまたは、関数のコールバックで処理する JSON オブジェクトで応答することもできます$.ajax

于 2013-09-20T20:32:34.190 に答える
0

メッセージが送信されないことは既知のエラーであるため、成功ブロック内で処理します。jsonサーバーからクライアントにオブジェクトを渡し、そこに変数を入れることができます。trueここでは、SMS が正常に送信された場合のメッセージを送信しています。

$.ajax({ 
  type: "GET/POST", // which ever will be better 
  url: "",
  success: function(data) {
     if (data.message == "true"){
      //message sent
     } else{
      //message was not send 
     }
  },
  error: function() {
    // handle if ajax request fails for unknown reasons
  }
});

def call_sms
  @text_number = params[:phone_number]
  @text_message     = params[:text_message].to_s
  @sms = ShortMessagingService.new
  @sms.send(@text_number, @text_message)
  @sms_message = @sms.sent?

   respond_to do |format|
        # you can pass other variables the same way as message
        format.js {render :json => {:message => @sms_message}}
  end
end
于 2013-09-20T20:53:49.290 に答える