redirect_to @语法含义

时间:2012-10-19 21:41:22

标签: ruby-on-rails ruby-on-rails-3

代码是什么

redirect_to @user

在控制器方法中使用时,意味着在Rails中?

它究竟在哪里重定向到?它是重定向到用户控制器(如果是,控制器的哪个方法),还是不通过控制器而是直接转到视图?

4 个答案:

答案 0 :(得分:4)

基本上,它会查找有关资源路径如何工作的大量内容

想到这就好了

send("#{@user.class.name.underscore.downcase}_path", @user)

这可能不是确切的代码,但它应该可以帮助您想象实际发生的事情。

控制器总是运行,在这种情况下,除非你有一些时髦的路由器选项,否则它将是你的用户控制器的show动作。

rake routes解释了在这个案例中如何布置路线

get /users/:id => users#show :as => "user_path"

您传入的模型的替换就像这样

从您的路线创建正则表达式

:id是一个参数

将匹配inbound_object到路径函数@user

:id is replaced with @user.id

答案 1 :(得分:2)

来自redirect_to docs

  

将浏览器重定向到选项中指定的目标。此参数可以采用以下三种形式之一:

   ...
     

记录 - 将通过调用带有选项的url_for生成URL,该选项将引用该记录的命名URL。

来自url_for docs

  

传递记录(如Active Record或Active Resource)而不是Hash作为options参数将触发named   该记录的路线。查找将在名称上发生   类。因此传递Workshop对象将尝试使用   workshop_path路线。如果您有嵌套路由,例如   admin_workshop_path你必须明确地调用它(它是   url_for不可能猜到那条路线。)

答案 2 :(得分:2)

这相当于写作

redirect_to user_path(@user)

更多Rails魔法在这里工作,无论好坏。

答案 3 :(得分:1)

它调用像这样的用户的show函数

redirect_to user_path(@user)

重点:如果我们看到路线那么:传递了id但是这里的对象正在传递

通过

转换为用户的id

def to_param      self.id    端

在模型中可用,我们可以将其覆盖到

所以基本上首先要进行转换

redirect_to @user => redirect_to user_path(@user)

然后

 @user => @user.id