Почему url_for возвращает / assets для неопределенных маршрутов? - PullRequest
6 голосов
/ 28 марта 2012

Я обновляю рельсы с 3.1.3 до 3.2.2, но по какой-то причине теперь url_for всегда возвращает / assets, если маршрут не существует.

Например:

url_for({}) #=> "/assets"
url_for({action: 'fake', controller: 'notreal'}) #=> /assets?action=fake&controller=notreal

Но я хочу, чтобы он генерировал обычный ActionController :: RoutingError, как обычно ...

Ответы [ 2 ]

1 голос
/ 29 апреля 2013

Rails не проверяет существование маршрута, если вы строите маршрут через указание контроллера-действия.И, естественно, он показывает / assets для {} route.

Вы должны лучше указать именованные маршруты в route.rb, а затем использовать их для url_for.Например:

url_for add_user_path

Это гарантирует, что вы либо преуспеете (для существующего именованного маршрута), либо получите ошибку.

HTH

0 голосов
/ 11 апреля 2012

Я думаю, что у вас есть предварительная компиляция ресурсов, и поскольку изображение не существует в папке ресурсов, имя файла компиляции является нулевым, но путь указывает на корень папки ресурсов. Вы также видите ошибку о том, что не нашли предварительно скомпилированный ресурс в журналах?

Попробуйте обойтись без предварительной компиляции ресурсов в среде разработки, чтобы обойти это. Я не буду перефразировать детали прекомпиляции активов - вы можете проверить http://guides.rubyonrails.org/asset_pipeline.html для получения информации о конвейере активов. Если вы видите эту проблему только в производственной среде, это может быть связано с тем, что хост-платформа предварительно компилирует ресурсы для вас.

Однако, если вы ожидаете, что это произойдет в рабочей среде, вы, возможно, захотите проверить наличие изображения вместо отключения предварительной компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...