如果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例如,rails如何确定index function maps映射到GET/users,而create function映射到POST/users
resources :users如何知道映射到UsersController
发布于 2013-02-11 07:42:26
Rails基于“约定重于配置”的范例。
因此,"resources :users“行表明所有标准的CRUD方法都由相应的UsersController <--”Users“前缀与控制器、模型等匹配。
发布于 2013-05-09 18:40:33
请查看rails路线指南:http://guides.rubyonrails.org/routing.html
要查看routes声明在您的项目目录中执行此命令的实际效果:
rake路由
同样,正如前面提到的,坚持约定,并记住rails是一个非常固执己见的软件。
https://stackoverflow.com/questions/14803935
复制相似问题