所以我在Rails中测试一个非常简单的API,看看我是否可以使用Chrome插件Postman(REST客户端扩展)在本地创建用户.
在我的rails应用程序中,我为我的API设置了一个文件夹/命名空间,每当我尝试创建我的用户时,我都会收到以下错误:缺少模板api/v1/users/create,application/create with {:locale => [:en],:formats => [:json],:handlers => [:erb,:builder,:raw,:ruby,:jbuilder,:coffee]}.搜索范围:*"PATH/app/views"
我正在使用Rails 4.0.1和Ruby 2.0
我在下面发布了我发布的截图:
module Api module V1 class UsersController < ApplicationController class User < ::User # add any hacks end respond_to :json def index respond_with User.all end def show respond_with User.find(params[:id]) end def new @user = User.new end def create @user = User.create(user_params) # respond_with(@user) if @user.save # render json: @user, status: :created, location: @user redirect_to @user end end private def user_params params.require(:user).permit(:name, :age, :location) if params[:user] end end end end
所以基于我的user_params,我应该能够创建一个新用户,对吗?如果您需要任何其他信息,请告诉我,我会尽快回复!谢谢!
您可以使用API创建用户.
1)首先,您需要在您的routes.rb中放置适当的资源:
YourApp::Application.routes.draw do namespace :api do namespace :v1 do resources :users end namespace :v2 do # ... if needed end end root to: 'users#index' end
2)您需要创建一个RESTfull样式的控制器来处理请求.这里可以实现您的"创建"操作.
def create respond_with User.create(fio: params[:fio], phone: params[:phone], region: params[:region], updated_at: Time.now) end
使用respond_to的'create'示例:
def create # ... respond_to do |format| format.html {render text: "Your data was sucessfully loaded. Thanks"} format.json { User.create(... params ...) render text: User.last.to_json # ! } end end
如果您需要特殊的回复,请参阅有关respond_with和respond_to的文档.
也可以是关于API构建的有用的railscasts剧集:#350和#352
PS文件夹/名称空间/ v1/users_controller应与模块Api中的类名相同
PS2您可以观察我的应用程序,您可以在其中找到有用的东西(与您的应用程序相同 - 用于创建记录的简单API) - myApp
users_controller示例(controllers/api/v1/users_controller.rb):
#encoding: utf-8 module Api module V1 class UsersController < ApplicationController # Api::BaseController before_filter :authenticate_user!, except: [:create, :index] respond_to :json def index #respond_with respond_to do |format| format.html {render text: "Your data was sucessfully loaded. Thanks"} format.json { render text: User.last.to_json } end end def show respond_with User.find(params[:id]) end def create respond_with User.create(access_token: params[:access_token], city: params[:city], created_at: Time.now, phone: params[:phone], region: params[:region], updated_at: Time.now) end def update respond_with User.update(params[:id], params[:users]) end def destroy respond_with User.destroy(params[:id]) end end end end