问题标签 [turbo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1952 浏览

javascript - 处理数据禁用的热线方式是什么?

我开始在我的 Rails 应用程序中使用Hotwire,并实现了类似于教程视频的内容,其中提交了表单并刷新了页面的另一部分。就像在视频中一样,我必须实现自己的重置表单控制器:

重置表单中的值。表单看起来像:

在按钮中生成如下:

因为有一个data-disable-with,当你按下按钮时,它会被禁用以避免双击提交,这很棒。问题是它this.element.reset()不会重置它。

处理这个问题的正确方法是什么?

我不是在寻找解决方法,我知道很多,但我正在寻找解决这个问题的干净解决方案。

这是由 UJS 引起的按钮的禁用吗?这是否意味着不应在 Stimulus 应用程序中使用 UJS?

reset我可以从JavaScript 函数重新启用按钮,但如果输入按钮是这样指定的:

value然后按钮的原始标签 (完全重新加载页面。

我可以扔:

并使用刺激控制器实现我自己的双击预防,但这感觉不对。问题不在于属性data-disable-with,而在于它是如何实现的。

0 投票
1 回答
2316 浏览

javascript - 加载新的 Turbo Frame 时如何执行 JavaScript

我在我的 Rails 应用程序中使用 Turbo Frames,并且在每个页面上都有

这可以很好地加载,并且当单击链接时会按预期替换框架。在这个框架中我已经设置overflow-y: scroll,在页面上创建一个可滚动的框架。每次在框架中加载新页面时,我都希望它滚动到底部。我怎样才能做到这一点?理想情况下使用原生 JavaScript。

0 投票
1 回答
1258 浏览

ruby-on-rails - Hotwire turbo 流返回 head :no_content

我有一个带有帖子和评论的系统,每个Post has_many Comments。我正在尝试设置一个涡轮流,以便在您发表评论时立即显示。

一切正常,数据被持久化到数据库中,但似乎涡轮流没有正确返回。当我点击“评论”按钮时,没有任何变化,我收到一条:no_content消息CommentsController#create

Turbo 似乎可以在数据库中创建评论,然后发回评论 POST 请求,我可以在浏览器网络选项卡中看到该请求。我想知道为什么有:no_content以及为什么评论在页面刷新之前不显示。

Place.rb

Comment.rb

comment_controller.rb

在帖子中,我将评论呈现为部分内容:

然后comments/_show.html.erb

_comment.html.erb

new.html.erb

我想我可能已经找到了这个问题,但我不确定为什么会这样,日志中的最终想法是:

在我看来,这将是action=\"append\"而不是替换,尤其是因为comment_36页面上目前还不存在。

0 投票
1 回答
419 浏览

ruby-on-rails - 如何使用 Hotwire 和 Turbo.js 访问 current_user 助手?

我正在按照本教程实现用户可以提交琐事/有趣事实的功能。

我想将(编辑/删除)功能限制为每个项目的管理员或作者。</p>

我在 .application_controller 中创建了一个辅助类

但是当我在带有 Hotwire 的 Turbo-frame 中使用它时,我收到了这个错误

| ActionView::Template::Error(设计在您的请求环境中找不到Warden::Proxy实例。

这是我的代码供参考

索引.html

_trivium.html.erb

如何访问部分评论中的 current_user 帮助程序以检查 current_user 是作者还是管理员(并且应该允许删除/编辑)?

0 投票
1 回答
1022 浏览

ruby-on-rails - 如何在 turbo_frame 中重定向表单?

我需要添加一个按钮来保存以下表单的数据,但是当按下它时会重置视图并停留在其中,而不重定向到控制器的索引,我尝试了一个 ajax 调用,但我不知道为什么它对我不起作用。如何提供解决方案并添加按钮以保存并继续?

0 投票
1 回答
137 浏览

ios - 在 iOS 应用和 Rails 后端之间传递用户 ID 以进行应用内购买

我有一个支持 Turbo 的 Rails 应用和一个Turbo Native iOS 应用。

在 web 应用程序上,您可以通过 Stripe 购买订阅,因此我需要启用 iOS 应用程序用户在应用程序内购买的能力。

到目前为止,我已经进行了以下设置:

  • 在原生应用中,当用户点击“购买”按钮时,将正确的支付请求发送到苹果的服务器,并弹出“购买”界面

  • 来自 Apple 的服务器通知设置为,当订阅已购买、续订或使用收据数据取消时,我的 Rails 应用程序中的端点会被 ping 通。现在,我只是将 JSON 响应打印到我的日志中。

将我的网络应用程序中的唯一用户 ID 连接到 Apple 购买的最佳方式是什么?

目前发生的情况是我的 Sandbox iCloud 用户被标记为已订阅,但该信息未连接到应用程序的登录用户,因此他们无权访问付费层功能。

这是理想的工作流程:

  • 用户在应用程序中点击“购买”并确认付款

  • 当我从 Apple 收到成功的服务器通知时,我可以将该用户标记为已付费并为他们创建订阅对象,存储原始交易 ID 和其他相关订阅信息

  • 购买完成后,用户将被重定向到应用程序内的另一个页面/视图

  • 当 Apple 进一步发送服务器通知时,我可以将原始事务 ID 与我的 Rails 应用程序数据库中的订阅相匹配,并根据需要更新用户的访问/订阅。

主要是将付款与我的 Rails 应用后端中的用户联系起来。

有没有人成功建立这样的工作流程?

我很想得到一些关于如何处理它的指导。

非常感谢!

0 投票
1 回答
1534 浏览

ruby-on-rails - 在 Hotwire/Rails 应用程序中,何时使用 target: '_top' 作为 turbo_frame?

turbo 手册target: '_top' 在此处此处进行了说明。

但是我还是不明白这两种形式有什么区别:

#1

#2

两种形式都会通过 GET 方法发送一个普通的 HTML 格式请求,整个页面将被 Turbo Drive 替换。因此,在这种情况下,它们的行为看起来非常相似。

仅当我希望内容在框架外导航时需要通过 Turbo Frametarget: '_top'的属性延迟加载某些内容时才有用?src

0 投票
1 回答
266 浏览

ruby-on-rails - 如何通过 Hotwire Turbo 流正确渲染图像?

我的问题:使用 Hotwire/Turbo 渲染图像时,所有 URL 都使用主机example.org而不是我的实际主机名呈现。常规视图很好,但通过 Turbo 流呈现部分会导致 ActiveStorage URL,例如http://example.org/.../.

上下文:我有一个简单的 Todo 应用程序,具有工作视图、部分和 turbo 流,它们一起显示 Todo 和关联用户列表。当我将用户加入 Todo 时,turbo 流会呈现正确的部分,并将用户的名称和头像放在我想要的 DOM 中。但是,来自 ActiveStorage 的图像 URL 包含example.org主机名。

我在 中设置了标准 URL 选项config/environments/*.rb,包括routes.default_url_options[:host]config.action_mailer.default_url_options[:host]。我还了解了文件config/initializers/application_controller_renderer.rb,您可以在其中设置http_host参数;但是,我已经设置http_hosthttps布尔值,并且 Turbo 仍在image_tag使用 example.org 渲染我。

此外,我发现有关如何以编程方式操作默认渲染器的建议有限(以解决问题)。该来源说要获取ApplicationController.renderer并覆盖属性,如下所示:

但是这些broadcast_action_to方法似乎不接受renderer参数,所以这实际上对我在 Turbo 中没有帮助。

一定有我遗漏的配置,但我在 Turbo 或 Hotwire 文档中找不到它。

0 投票
2 回答
2081 浏览

ruby-on-rails-5 - 如何使用 Turbo Streams 提交有关输入更改的表单?

我有一个表单,我想在任何输入字段更改时自动提交。我正在使用 Turbo Streams,如果我使用onchange: "this.form.submit()"它,Turbo Streams 不会捕获它,并且 Rails 使用标准的 HTML 响应。单击提交按钮时它工作正常。我该如何解决这个问题?

0 投票
1 回答
367 浏览

ruby-on-rails - Rails + Hotwire:为什么我的链接在单击时会消失?

我正在尝试将 Hotwire/Turbo 合并到现有的 Rails 应用程序中。我已将涡轮帧添加到一个简单的编辑页面,但现在当我单击后退按钮时,它会消失,而不是带我到目标页面。链接很简单link_to "Back", my_model_show_path(model_instance)

我看到网络请求发生了,并且成功了。DevTools 的 Network 选项卡中的页面预览显示正在加载并呈现为 html 的正确页面。浏览器只是不会将我带到新位置。

我如何使这项工作像以前一样?我觉得即使我使用的是 Hotwire/Turbo,我也应该能够使用常规链接重定向应用程序中的任何位置。