将json渲染为rails控制器中的输出

时间:2014-04-16 07:52:18

标签: ruby-on-rails-3

我的rails控制器和控制器中有一个方法,我需要将输出呈现为json格式的消息。

def createItem
    @item = Item.new(params[:item])

    respond_to do |format|
      if @item.save
        format.json { render json: message: "Item is successfully Created" }
      else
        format.json { render json: @item.errors, status: :unprocessable_entity }
      end
    end
  end

但是当我提交表单时,浏览器显示为空白。我需要像上面那样渲染json文本。我该怎么做。请帮忙

2 个答案:

答案 0 :(得分:1)

你可以改变,

def createItem
  @item = Item.new(params[:item])

  respond_to do |format|
    if @item.save
      format.json { render json: message: "Item is successfully Created" }
    else
      format.json { render json: @item.errors, status: :unprocessable_entity }
    end
  end
end

def createItem
  @item = Item.new(params[:item])

  respond_to do |format|
    if @item.save
      json_string = {'message' => 'Item is successfully Created'}.to_json
      format.json { render :json => {item: @item, json_string}
    else
      format.json { render json: @item.errors, status: :unprocessable_entity }
    end
  end

答案 1 :(得分:0)

如果您想查看JSON请求,则必须在网址末尾提供.json

假设您不想提供网址,请在模型中键入:

def as_json(options={})
    { :name => self.name }  # NOT including the email field
end

def as_json(options={})
    super(:only => [:name])
end

然后在你的控制器中:

def index 
  @names = render :json => Name.all 
end

然后JSON代码将自动进入图片而不使用.json