[英]What does redirecting to an instance mean in Ruby on Rails
重定向到特定实例意味着什么? 我知道重定向的工作原理。
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
end
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
log_in @user
flash[:success] = "Welcome to the Sample App!"
redirect_to @user
else
render 'new'
end
end
def edit
@user = User.find(params[:id])
end
private
def user_params
params.require(:user).permit(:name, :email, :password,
:password_confirmation)
end
end
我了解以下重定向方式:
redirect_to :new
(重定向到新方法并显示new.html.erb文件) redirect_to "show"
(重定向到show.html.erb文件或show方法的路径) 但是redirect_to @user
是什么意思? 我们将重定向到哪个方法和路径?
如果您查看redirect_to文档,将会发现这一点。
记录 -通过使用options
调用url_for
生成URL,该URL将引用该记录的命名URL。
这是Rails的“魔术”, @user
使用GET
重定向到该@user
的#show
操作。 您也会在默认的Rails表单中找到类似的内容,但对于POST
。
根据Michael Hartl的The Rails Tutorial中的 7.4.1节:
redirect_to @user
可以代替
redirect_to user_url(@user)
引用迈克尔·哈特尔:
这是因为Rails会自动从redirect_to @user推断出我们要重定向到user_url(@user) 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.