2012-05-16 2 views
0

Я сейчас читаю Beginning Rails 3. У меня есть вопрос о перенаправлении. В книге говорится, что «redirect_to также может принимать объект как параметр» по пути. Таким образом, например, они дают чтоперенаправление и маршруты в Rails

redirect_to(@article) 

ярлык эквивалентно

redirect_to(article_path(:id => @article)) 

Я не уверен, я понимаю это. Что такое строка: id => @article?

спасибо, микрофон

ответ

1

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-адрес!

0

:id => @article ярлык для :id => @article.to_param, который только указывает который статью, которую вы ищете для просмотра.

0

Прежде всего, выполните rake routes в консоли. Он отобразит список маршрутов вашего приложения.
Будет маршрут под названием статья.

article_path - это просто ссылка для маршрута артикул.

И делая (:id => @article), вы передаете ему параметр id, который имеет значение @article.

Смежные вопросы