如何在 Webpacker 中使用 Rails Url 助手/Rails 5.1 中的 React-rails
Posted
技术标签:
【中文标题】如何在 Webpacker 中使用 Rails Url 助手/Rails 5.1 中的 React-rails【英文标题】:How to use Rails Url helper in Webpacker / React-rails in Rails 5.1 【发布时间】:2018-01-20 15:24:34 【问题描述】:我正在使用web-packer 和react-rails gem 来构建一个在线旅游应用程序。我在使用服务器端渲染的 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。
【问题讨论】:
是的,抱歉,唯一的方法就是将它作为道具传递。帮助程序在您的 Javascript 中不可用。 【参考方案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
【讨论】:
以上是关于如何在 Webpacker 中使用 Rails Url 助手/Rails 5.1 中的 React-rails的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Rails 6 和 webpacker 中使用 morris.js?
如何在 Webpacker 中使用 Rails Url 助手/Rails 5.1 中的 React-rails