如果routes.rb
文件只指定了以下内容,rails如何知道如何映射到控制器中的每个函数:
resources :users
但在UsersController
内有
class UsersController < ApplicationController
# GET /users
# GET /users.json
def index
@users = User.all
respond_to do |format|
format.html # index.html.erb
format.json { render :json => @users }
end
end
# GET /users/1
# GET /users/1.json
def show
@user = User.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render :json => @user }
end
end
# GET /users/new
# GET /users/new.json
def new
@user = User.new
respond_to do |format|
format.html # new.html.erb
format.json { render :json => @user }
end
end
# GET /users/1/edit
def edit
@user = User.find(params[:id])
end
# POST /users
# POST /users.json
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to @user, :notice => 'User was successfully created.' }
format.json { render :json => @user, :status => :created, :location => @user }
else
format.html { render :action => "new" }
format.json { render :json => @user.errors, :status => :unprocessable_entity }
end
end
end
# PUT /users/1
# PUT /users/1.json
def update
@user = User.find(params[:id])
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to @user, :notice => 'User was successfully updated.' }
format.json { head :no_content }
else
format.html { render :action => "edit" }
format.json { render :json => @user.errors, :status => :unprocessable_entity }
end
end
end
# DELETE /users/1
# DELETE /users/1.json
def destroy
@user = User.find(params[:id])
@user.destroy
respond_to do |format|
format.html { redirect_to users_url }
format.json { head :no_content }
end
end
end
当index function maps
映射到GET/users
时,rails如何确定create function
到POST/users
?
resources :users
如何知道如何映射到UsersController
?
答案 0 :(得分:4)
Rails基于'约定优于配置'范例。
因此,“resources:users”行表示相应的UsersController支持所有标准CRUD方法&lt; - 'Users'前缀与Controller,Model等匹配。
答案 1 :(得分:1)
请查看导轨路线指南:http://guides.rubyonrails.org/routing.html
并且在实践中看到路径声明在项目目录中发出此命令的内容:
rake routes
同样如前所述,坚持使用惯例并记住rails是一个非常固定的软件。