我在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]}“
答案 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.json和http://localhost:3000/user/1.json页面呈现为JSON和HTML而没有" .json"