Nano Hash - криптовалюты, майнинг, программирование

Вспомогательный метод пути объекта Rails 5 не найден

После обновления до Rails 5.0.0.beta4 я получаю сообщение об ошибке «неопределенный метод» при попытке отправить электронное письмо с помощью помощников пути Rails. У меня есть класс ActiveRecord с именем Project, и я пытаюсь отправить электронное письмо, содержащее ссылку на страницу проектов, используя помощник пути `project_path(project.id). До Rails 5 это работало.

Вот ERB для ссылки:

<%= project_path(@project.id) %>

Я использую ActionMailer для отправки электронной почты. Любые идеи о том, что могло вызвать эту проблему после перехода на Rails 5?


  • Вы пытались запустить rake routes, чтобы увидеть доступные методы пути? 27.05.2016

Ответы:


1

Rails 4.2 разрешил эту функцию как перенос из прошлых версий Rails; однако Rails 4.2 явно не одобряет это через документацию в Примечания к выпуску Rails 4.2. Это задокументированное предупреждение называется устаревшим и используется в качестве предварительного уведомления о том, что функция нарушит код в следующем выпуске.

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

Rails 5 была версией, в которой фактически была удалена поддержка ActionMailer для помощников _path, которые ранее считались устаревшими. Rails 5.0.0.beta1 CHANGELOG показывает, что разрыв был сделан именно тогда. запрос на извлечение был объединен в Rails 5 RC1 с эту фиксацию.

27.05.2016

2

Помощники пути, по-видимому, были удалены для электронных писем в rails 5. Новый синтаксис описан DickieBoy project_url, который дает весь URL-адрес, а не только часть URL-адреса.

27.05.2016

3

Я не думаю, что это имеет какое-то отношение к Rails 5, возможно, кто-нибудь, поправьте меня, если я ошибаюсь.

Представьте, что вы открываете электронное письмо. Вы видите ссылку на что-то, ооо, позвольте мне щелкнуть по ней.

нажмите

file:///projects/1 появится в окне браузера. А? Это странно. Позвольте мне попробовать еще раз.

file:///projects/1 ах, я вижу проблему, которую этот человек пытался указать путь к веб-сайту в электронном письме.

TL;DR Используйте project_url, а не project_path.

27.05.2016
  • URL-адрес добавляется к строке, с которой у меня проблемы, и это работает. Проблема возникает перед отправкой электронной почты и вызывает сбой при отображении электронной почты. Это не проблема пути. 27.05.2016
  • То есть письмо не отправляется из-за этой ошибки. 27.05.2016
  • Извините, потому что повествование в ответе не является структурированным ответом, и это действительно было вызвано изменением рельсов. 27.05.2016
  • @PabloKarlsson из документации по рельсам: guides.rubyonrails.org / Из-за этого поведения вы не можете использовать какие-либо вспомогательные функции *_path внутри сообщения электронной почты 27.05.2016
  • Если вы исправите свой ответ, я проголосую за него и проверю. 27.05.2016
  • Что имеет guides.rubyonrails.org/ имеет отношение к Rails 5 или к устареванию? Это руководство ссылается на текущую стабильную версию (4.2.6), и ее поведение не менялось годами. 27.05.2016
  • @TomLord не уверен, на кого был нацелен ваш комментарий, но; гиды. имеет очень мало общего с выпуском Rails 5, но зная, что помощники *_url не должны использоваться в текущей версии, и нет смысла работать в Rails 5, как вы сказали: поведение не изменилось для годы 27.05.2016
  • @DickieBoy проблема с ответом в том, что он предполагает, что нет ничего плохого, а не функция была удалена. Да ничего страшного, но при обновлении с 4 на 5 это не полезная информация. Более того, поскольку мы указали адрес сервера в нашей ссылке другими способами, не было причин подозревать, что ссылка должна была направить пользователя на file://. 30.05.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..