Rails返回JSON而不是HTML

时间:2015-11-16 18:40:20

标签: html ruby-on-rails json rest crud

我在rails web应用程序上有一个ruby,但我希望它像Web服务一样,而不是HTML来返回JSON。我希望这适用于所有CRUD方法。我希望整个页面呈现为JSON,到目前为止,我只在User变量的Show和Edit中实现了这一点。但我想要整个页面,所有CRUD方法都显示为JSON。

    def index
    @users = User.all
end


def show
    @user = User.find(params[:id])

    # Render json or not
    render json: @user
end


def new
    @user = User.new
end


 def edit
    @user = User.find(params[:id])
end


def create
    @user = User.new(user_params)

    if @user.save
        redirect_to @user
    else
        render 'new'
    end
end


def update
    @user = User.find(params[:id])

    if @user.update(user_params)
        redirect_to @user
    else
        render 'edit'
    end
end


def destroy
    @user = User.find(params[:id])
    @user.destroy

    redirect_to users_path
end

到目前为止,我发现了这个render json: @user,但我希望整个页面呈现为JSON而不仅仅是变量。以及所有CRUD方法的每个URL。

编辑:如果我添加routes.rb类似resources :users, defaults: {format: :json}的内容,那么我会收到错误消息“缺少模板用户/索引,应用程序/索引{:locale => [:en], :formats => [:json],:variants => [],:handlers => [:erb,:builder,:raw,:ruby,:coffee,:jbuilder]}“

1 个答案:

答案 0 :(得分:1)

尝试索引页

respond_to do |format|
  format.html { @users }
  format.json { render json: json_format(@users) }
end

对于所有其他人来说,用户是一个对象

respond_to do |format|
  format.html { @user }
  format.json { render json: json_format(@user) }
end

在此之后,您将有http://localhost:3000/users.jsonhttp://localhost:3000/user/1.json页面呈现为JSON和HTML而没有" .json"