我在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文本。我该怎么做。请帮助
您可以更改,
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
结束
如果您想查看JSON请求,您必须在URL末尾提供.json
。
假设你不想给出url,在你的模型中你应该键入:
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
的情况下自动显示出来。