我正在使用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视图传递给Component,或者直接使用Rails.application.routes.url_helpers,但这对于那些有很多jsx视图的人来说非常不方便链接。
我试图查看web-packer文档,但似乎gem不支持erb loader的Rails视图助手。
请帮忙咨询!
ps:我正确配置了erb webpacker加载程序。
答案 0 :(得分:4)
在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中)。
对于link_to,您可以使用:
ActionController::Base.helpers.link_to