LINUX.ORG.RU

Зачем такое «разнообразие» в Rails?

 


0

2

В процессе изучения RoR, я пришел к тому, что абсолютно одни и тежи действия можно сделать 3мя и более способами. Вот, к примеру:

link_to "Edit", edit_products_path(@product)
link_to "Edit", [:edit, @product]

или

link_to "Show", product_path(@product)
link_to "Show, @product

Зачем такая мешанина? Почему нельзя выбрать что-то одно?

Ответ на: комментарий от zz

Ok, но «more one way to do it» здесь не только один или два, а 5 или 10. Причем разные разработчики используют разные «способы» и читать их код не всегда легко.

GreenBag ★★
() автор топика

«синтаксический» сахар, от него иногда слипается

Deleted
()

Не вижу проблемы: _path/_url нужны в любом случае для генерации урлов, но код с @product выглядит короче и проще.

Запутаться тяжело в обоих вариантах.

kelyar ★★★★★
()

В процессе изучения RoR, я пришел к тому, что абсолютно одни и тежи действия можно сделать 3мя и более способами.

pe^Wruby-style, привыкай

alienclaster ★★★
()

Выбери и пиши, в чём проблема?

anonymous
()

Ну, во-первых, это красиво (с)

thesis ★★★★★
()

Почему нельзя выбрать что-то одно?

Как раз таки МОЖНО выбрать что-то одно, наиболее тебе подходящее в каждом конкретном случае.

Alve ★★★★★
()
Ответ на: комментарий от alienclaster

pe^Wruby-style, привыкай

Ruby тут вообще нет, это хелперы Rails.

Alve ★★★★★
()

Не, ну ты пойми, не все используют rest (поэтому есть всякие :controller => :some, :action => :do), не все имеют полностью rest-овые контроллеры, поэтому есть named-роуты, а для самых «стандартных» ситуаций есть «красивые» link_to 'show', @product.

Надо понимать, что такой вид хелперов - вообще не является совсем уж ООП-стилем, скорее там было что-то вроде link_to 'show', ProductsController.new.route_to(:index), но это было бы не так красиво, как иметь вот такой вот набор методов, в конце концов Рельсы всегда в первую очередь писались для разработчиков, стараясь угодить максимальному числу запросов.

pechorin
()

Тебе на django, если не хочется выбирать.

drakmail ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.