#ruby-on-rails
#ruby-on-rails
Вопрос:
Я читаю «Rails 3 Way» Оби Фернандеса, и я не уверен, что правильно понял кое-что из этого. Я новичок в rails и хочу убедиться, что я правильно это понимаю. У меня есть некоторый опыт работы с ванильным Ruby. Немного, но есть.
Рассматриваемый текст выглядит следующим образом: (относительно маршрутизации и файла config / routes.rb)
«…
Путем создания маршрута, подобного
match 'auctions/:id' => "auction#show", :as => 'auction'
вы получаете возможность использовать удобные вспомогательные методы в таких ситуациях, как
link_to item.description, auction_path(item.auction)
…»
Мой вопрос в том, конкретно какая часть match 'auctions/:id' => "auction#show", :as => 'auction'
создает вспомогательные функции? (например, link_to auction
и auction_path()
) Является ли это :as => 'auction'
частью? Будут ли какие-либо помощники созданы без добавления :as => 'auction'
?
Мое замешательство связано с другими руководствами, которые я видел, где это опущено, и все же помощники, похоже, создаются независимо. Что конкретно rails использует в match
инструкциях в файле routes.rb для создания помощников? Если это не :as => 'auction'
часть, то какова конкретная цель добавления этого к match
инструкции?
Я знаю, что это кажется сверхосновным вопросом, но эта деталь, похоже, замалчивается в текстах, которые я прочитал до сих пор. Заранее спасибо за любой свет, который вы можете пролить на это.
Ответ №1:
Я только что попробовал это:
match "alfa/beta", to: 'users#new'
В этом случае, даже без :as => 'named_route'
, я получил бесплатно следующего помощника
alfa_beta_path
которое, как и ожидалось, указывает на users#new
.
Итак, похоже, что помощники также автоматически генерируются путем синтаксического анализа строки маршрута, в случае отсутствия :as
спецификации.
Ответ №2:
Да, это :as => 'named_route'
часть, которая создает именованный маршрут (который, в свою очередь, создает помощников). Что касается того, чтобы оставить это без внимания, вы имеете в виду экземпляры resources :something
in routes.rb
? resources
Метод автоматически генерирует набор помощников URL на основе имени ресурса.
Комментарии:
1. Спасибо за ваш ответ. Я имею в виду код других пользователей, который я прочитал на github, чтобы попытаться ознакомиться с тем, как работает rails, и мои собственные попытки разобраться с rails на сегодняшний день. (У меня около недели опыта работы с rails и около 6 месяцев опыта работы с ruby.) У меня начинает складываться ощущение, что мне было бы лучше вообще не знать ни о каком ruby, занимающемся этим. Это проливает много света на проблемы, с которыми я сталкивался до сих пор с помощниками. Я бы улучшил ваш ответ, если бы у меня было немного больше репутации. Еще раз спасибо!
2. Был порог знаний (по крайней мере, для меня), когда Rails перестал быть таким «волшебным» и начал обретать смысл. Код Rails может быть немного перегружающим, но его чтение — отличный способ увидеть, как все работает. Я думаю, в конце концов, вам будет лучше знать Ruby до того, как вы начали изучать Rails.