Как использовать хелпер Rails Url в Webpacker/React-rails в Rails 5.1

Я использую веб-упаковщик с react-rails для создания онлайн-приложения для путешествий. Я столкнулся с проблемой использования вспомогательного URL-адреса Rails в моем представлении JSX с рендерингом на стороне сервера:

Например, в моем представлении jsx:

#project/app/javascript/packs/app/components/front_end/SearchTripItemComp.erb
<%= link_to "Book Now!", search_trips_path, className: 'btn btn-book' %>

После запуска у меня есть эта ошибка:

введите здесь описание изображения

Что я могу придумать в качестве обходного пути, так это передать search_trips_path в качестве реквизита компоненту из моего представления Rails или напрямую использовать Rails.application.routes.url_helpers, но это очень неудобно, особенно для тех представлений jsx со многими ссылками.

Я попытался просмотреть документацию по веб-упаковщику, но похоже, что гем не поддерживает вспомогательный модуль представления Rails для загрузчика erb.

Пожалуйста, помогите советом!

ps: у меня правильно настроен загрузчик erb webpacker.


person channa ly    schedule 12.08.2017    source источник
comment
Да, извините, единственный способ передать это как реквизит. Помощник недоступен из вашего Javascript.   -  person Daniel Bang    schedule 15.09.2017


Ответы (1)


Попробуйте это в своем представлении jsx:

#project/app/javascript/packs/app/components/front_end/SearchTripItemComp.erb
<%= ActionController::Base.helpers.link_to "Book Now!", Rails.application.routes.url_helpers.search_trips_path, className: 'btn btn-book' %>

С использованием:

Rails.application.routes.url_helpers.*_path

вместо

*_path

в ваших файлах .erb внешние представления работают для url_helpers.

Rails.application.routes.url_helpers.search_trips_path

Если вам нужно генерировать URL-адреса из ваших моделей или из какого-либо другого места, то ActionController::UrlFor — это то, что вам нужно. Читайте дальше для введения. Как правило, этот модуль не следует включать сам по себе, так как он обычно включается url_helpers (как в Rails.application.routes.url_helpers).

ActionDispatch::Routing::UrlFor

Точно так же для link_to вы можете использовать:

ActionController::Base.helpers.link_to
person agni10    schedule 26.10.2017