4

我正在使用带有react-rails gem 的web-packer来构建一个在线旅游应用程序。我在使用服务器端渲染的 JSX 视图中使用 Rails URL 助手时遇到问题:

例如在我的 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 视图。

我试图查看 web-packer 文档,但似乎 gem 不支持 erb 加载器的 Rails 视图助手。

请帮忙指点!

ps:我已经正确配置了erb webpacker loader。

4

1 回答 1

5

在你的 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
于 2017-10-26T11:54:54.233 回答