繁体   English   中英

重定向到实例在Ruby on Rails中意味着什么

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM