【问题标题】:current_page? doesn't work for POST even using url_for()当前页面?即使使用 url_for() 也不适用于 POST
【发布时间】:2020-12-03 18:12:20
【问题描述】:

current_page? doesn't work with POST requests,但是有said可以解决here

我尝试像这样使用url_for

current_page?(url_for(controller: 'pages', action: 'booking_confirm'))

# but..

ActionController::UrlGenerationError in Pages#index

No route matches {:action=>"booking_confirm", :controller=>"pages"}

作为参考,这里是由于请求为POST而失败的尝试

# 1
current_page?(url_for('/booking_confirm'))

# 2
current_page?('/booking_confirm')

另外,here 对此事有一些有趣的了解。我不完全理解它,但它暗示current_page? 可能无法做我需要它做的事情,但我在这里询问以防有人有一些想法

【问题讨论】:

  • 你能详细说明用例吗?也许还有其他简单的解决方案可以使用,特别是如果这种方法有点不稳定/不可预测
  • 我同意@Maxence。我不明白 POST 路由的 current_page? 何时会起作用,但另一个问题是您发布的错误似乎表明该页面和操作不存在路由。如果有的话,能否请您发布相关路线?

标签: ruby-on-rails rails-routing


【解决方案1】:

这不是为什么current_page? 不能很好地与POST 配合使用通过url_for 构建的路线的答案,但我找到了一个解决方法,以防它对某人有用其他:

我最终需要将一些 HTML(脚本标签)放入文档的头部,所以我把它放在头部:

<%= yield :whatever_name_you_want %>

这在模板/视图中:

<% content_for :whatever_name_you_want do %>
   <script src="https://js.stripe.com/v3/"></script>
<% end %>

这在 30 秒内解决了问题,使 &lt;script src="https://js.stripe.com/v3/"&gt;&lt;/script&gt; 出现在该模板(或我放置代码块的任何模板)中。来自here的回答

【讨论】:

  • TBH 我很难看出与你原来的问题的关系,但我很高兴你能找到解决方案
猜你喜欢
  • 2012-07-27
  • 2013-11-13
  • 2020-11-28
  • 2019-05-30
  • 1970-01-01
  • 1970-01-01
  • 2011-08-18
  • 2022-11-14
  • 1970-01-01
相关资源
最近更新 更多