0

ajax機能の使い方

$(function() {
  $("form#new_user").click(function(e) { e.preventDefault();
      var dataString = $('#new_user').serialize();


     $.ajax({
      type: 'POST',
      url: '/user',
      data: dataString,
      success: function(data) { 
        $('#alertt').text(data);
        $('#alertt').fadeIn().delay(2000).fadeOut('slow');
      }
      });
      return false;

そして、php側では、それはただそのことを実行し、それが成功したときに、 Blahが成功json_encode(whatever)したようにデータを入れることができるようにしました。<p>

私のフォーム:

<form accept-charset="UTF-8" action="/users" class="new_user" id="new_user" method="post">

-

しかし、今Railsでは、セットアップは同じだと思いますが、データは次のようになりますが、テキストurl: '/users'をRailsに返送するようにメッセージを設定して、<p>テキストをUser Createdそれらの行の長いものに設定するにはどうすればよいですか。うまくいけば、私は理にかなっている感謝をしました。

例えば

def create
if user.save?
sendmessagebacksomethinglike('User Created')
end
end

(データ)で使用できるようにメッセージを送り返すにはどうすればよいですか?

4

2 に答える 2

0

私はよく2つのことに出くわしました。

:partial、:text

def create

    if user.save?

    render :text => "User Created!"

    end

end


$.ajax(
  success: function(data) {    
    $('#alertt').text(data);    
  }
  });
  return false;

ほとんどの場合、コントローラーでいくつかのインスタンス変数を設定した後にパーシャルをレンダリングし、そのパーシャルを取得して、divを使用してJSのHTMLにペイントします。これを気にしないでください。あなたが探しているのはrender:textです

これは私があなたを助けることができると思うモデルです、

見る

<%= form_tag url_for(:controller => "do", 
                     :action => "something"),
                     :id => 'do',:method => 'post'  do %>

<% end %>

application.js

$(function() {

     $("form#do").submit(function() {  

      var data = $('form#do').serialize();

       $.post('/do_something',data, function(result){

        $("#done").hide().html(result).fadeIn(3000);

        });        

       return false;

      });

});

ルート.rb

match '/do_something' => "do#something" #routing do_something to do controller, something action.

do_controller.rb

def something

  render :text => 'did something'

end
于 2013-03-11T21:06:22.350 に答える
0

JSでこれを試してください。

$.ajax({
  type: 'POST',
  url: '/user',
  data: dataString,
  dataType: "json",
  success: function(data) {
    $('#alertt').text(data.message);
  }
});

そしてこれはコントローラーアクションのために、

def create
  @item = Item.new(params)
  if @item.save
    render json: { message: "Successfully created." }.to_json, status: 201
  end
end
于 2013-03-11T21:16:29.563 に答える