如何将json响应传递回客户端

时间:2012-07-13 11:26:32

标签: ruby-on-rails ruby ruby-on-rails-3 jquery

在我的ruby on rails代码中,我想将json响应发送回客户端。由于我是新手上的ruby,我不知道怎么能这样做。我想发送error = 1 and success = 0作为json数据,如果数据没有保存到数据库,如果它成功保存,它应该发送success = 1 and error = 0请参阅下面的代码

这是我的控制器

class ContactsController < ApplicationController
  respond_to :json, :html
  def contacts
    error = 0
    success = 1

    @contacts = Contact.new(params[:contact])

    if @contacts.save
      respond_to do |format|
        format.json { render :json => @result.to_json }
      end
    else
      render "new"
    end
  end
end

这是我的javascript代码

$('.signupbutton').click(function(e) {
        e.preventDefault();
        var data = $('#updatesBig').serialize();
        var url = 'contacts';
        console.log(data);
        $.ajax({
            type: 'POST',
            url: url,
            data: data,
            dataType: 'json',
            success: function(data) {
                console.log(data);
            }
        });
    });

2 个答案:

答案 0 :(得分:4)

还有很多其他优雅的方式,但这是对的:

class ContactsController < ApplicationController

  def contacts
    @contacts = Contact.new(params[:contact])
    if @contacts.save
       render :json => { :error => 0, :success => 1 }
    else
       render :json => { :error => 1, :success => 0 }
    end 
  end

end

还添加一条到routes.rb的路由。如果您需要使用html响应,则必须包含respond_to do | format |。

答案 1 :(得分:0)

您必须调整路线以接受json数据

match         'yoururl' =>  "contacts#contacts", :format => :json

然后它会起作用