redirect_to(@article)
является ярлыком для redirect_to(article_path(@article))
. Rails может это сделать, потому что он извлекает имя класса из переменной @article
, что-то вроде send("#{@article.class.name.downcase}_path")
.
redirect_to(article_path(@article))
является ярлык для redirect_to(article_path(:id => @article))
, что является ярлыком для redirect_to(article_path(:id => @article.to_param))
. В основном Rails говорит, @article - это объект ActiveRecord, я спрошу его магическое значение to_param
. По умолчанию to_param
просто возвращает идентификатор статьи, но вы можете перезаписать его, чтобы вернуть его как slug или nicename, например 38-hello-world
.
Так что redirect_to(@article)
действительно говорит: «У меня есть статья, поэтому мне нужен путь к статьям, и мне нужен идентификатор ресурса, или to_param
, статьи.
Затем он создает URL-адрес!