📅  最后修改于: 2023-12-03 14:47:08.682000             🧑  作者: Mango
在Ruby on Rails中,控制器是应用程序的一部分,用于控制Web应用的请求和响应。控制器充当MVC框架中的C(控制器),将模型和视图连接在一起,并生成响应返回给用户。
控制器的目的是响应请求并生成响应。当用户访问Web应用程序时,控制器接收请求,并根据请求调用相应的操作。操作从模型中获取数据,并使用视图将数据呈现给用户。
Ruby on Rails中的控制器是一个类,可以放在名为controllers/
的目录中。控制器应该包括以下方法:
index
– 显示应用程序中所有资源的列表new
– 创建新的资源show
– 显示特定资源的详细信息edit
– 编辑特定资源的详细信息create
– 创建新的资源update
– 更新现有资源的详细信息destroy
– 删除现有的资源以下是一个简单的控制器类的示例:
class UsersController < ApplicationController
def index
@users = User.all
end
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
redirect_to users_path
else
render :new
end
end
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.update(user_params)
redirect_to users_path
else
render :edit
end
end
def destroy
@user = User.find(params[:id])
@user.destroy
redirect_to users_path
end
private
def user_params
params.require(:user).permit(:name, :email, :password)
end
end
在控制器类中,你可以定义许多方法来响应HTTP请求,并使用视图生成响应。以下是一个简单的控制器类来响应HTTP请求的示例:
class GreetingsController < ApplicationController
def hello
@name = params[:name] || 'World'
render 'hello'
end
def goodbye
@name = params[:name] || 'World'
render 'goodbye'
end
end
在上述示例中,我们定义了两个方法,hello
和goodbye
。每个方法都渲染与方法同名的视图hello.html.erb
和goodbye.html.erb
。在视图中,我们可以访问实例变量@name
,这些变量可以从请求参数中获取。
为了让控制器响应HTTP请求,我们需要在应用程序中定义路由。路由是一个URL模式和一个控制器动作的匹配项。以下是一个配置路由的示例:
Rails.application.routes.draw do
get 'greetings/hello'
get 'greetings/goodbye'
end
在上述示例中,我们使用get
方法来匹配URL模式,并指定相应的控制器动作。当用户访问/greetings/hello
时,将调用GreetingsController
类的hello
方法。
控制器是Ruby on Rails应用程序的重要组成部分,因为它们将模型和视图连接在一起,并生成响应返回给用户。控制器的结构包括用于响应HTTP请求的动作,并从模型获取数据,使用视图呈现数据。定义路由是将URL模式与控制器动作匹配的关键,以便正确响应HTTP请求。