问题标签 [hotwire-rails]

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 投票
0 回答
20 浏览

devise - 无法在浏览器上发布消息,但可以通过 rails 控制台

完整回购https://github.com/tenzan/filepost

我可以通过 rails 控制台发布消息:

Conversation.last.posts.create(author: Contact.last, body: "hello")

但无法在本地浏览器中发布,但您也可以在此处查看

https://filepost-dev.herokuapp.com/conversations/2

在检查元素中,我看到401 Unauthorized错误。我想,这是因为我有before_action :authenticate_user!,在PostsController

实际上,它不应该显示此错误,因为我正在尝试通过用户发布(您可以看到https://filepost-dev.herokuapp.com/conversations/2),所以不确定为什么通过 rails 控制台发布成功,但不在浏览器上。

不知道我还应该在这里分享什么,但你可以参考我在 github 上的 repo。

谢谢。

在此处输入图像描述

0 投票
0 回答
69 浏览

ruby-on-rails - Rails + Hotwire:Turbo 不会在更改子域的链接上触发

根据文档:

默认情况下,Turbo Drive 仅加载与当前文档具有相同来源(即相同协议、域名和端口)的 URL。对任何其他 URL 的访问会退回到整个页面加载。

但是我想让 Turbo 在子域之间(在同一个基域内)工作。有没有办法做到这一点?

0 投票
0 回答
79 浏览

javascript - 如何在rails 7中使用没有wepacker的条纹元素?

我正在使用 Rails 7.0.0.alpha2,我想集成条带元素(从条带中使用)。我没有 webpacker,但我有热线一起导入映射(负责 javascript 包)和刺激(Javascript 框架)

我有点迷茫,因为我无法正常使用 javascript 在内部将条带集成到我的应用程序中

如果有人将条纹元素与 rails 7 一起使用(或与刺激 js 一起使用)并且可以给我一些帮助,我将非常感激

0 投票
2 回答
358 浏览

ruby-on-rails - GET 请求在 turbo_frame_tag 中处理为 HTML 而不是 TURBO_STREAM

我开始使用 hotwire/turbo 并设置了一切。Turbo 流工作正常。

在 index.html.erb 中:

在 _task.html.erb 内

当按预期按下销毁按钮时,rails 控制台说:

但是当按下编辑按钮时,rails 控制台会说:

这意味着页面会加载一个新页面,呈现 edit.html.erb 而不仅仅是更新 turbo_frame_tag 中的内容。

检查 DOM 时,edit 和 destroy 链接都在一个 turbo-frame 内:

所以我的问题是,为什么请求被处理为 HTML 而不是 TURBO_STREAM ?

edit.html.erb 看起来像这样:

非常感谢!

0 投票
0 回答
56 浏览

ruby-on-rails - 在 Hotwire 中使用 Turbo 进行延迟加载

我希望能够在我的索引页面中延迟加载数据/记录。

为问题提供更多背景信息;

可以说我有一个Post,它有n数量Comments。评论显示在帖子的正下方,并且可以滚动以查看所有这些评论。我不想在页面加载时加载帖子的所有评论,我只想在页面加载时加载前几条评论,并在我向下滚动时懒惰地加载其余评论。

我阅读了一些有关使用 turbo 延迟加载的相关文章,但我无法清楚地了解它是如何工作的,因为它们中的大多数只提供了一个简短的想法。如果有人能阐明我的困惑或提及我可能错过的资源,我将不胜感激。谢谢。

0 投票
1 回答
23 浏览

ruby-on-rails - 重新加载实例变量热线

我的 index.html.erb 中有一个产品计数器,如下所示:

@products在控制器方法中实例化如下:

在控制器中,我有一个删除操作,当它成功时,它会重定向回索引页面:

但是我@products.count的没有更新。我正在使用带有 Hotwire 的 Rails 7。

查看我的日志,重定向时会发生以下情况:

实例变量是否在重定向时自动重新加载,如果没有,我怎样才能让它重新加载?

0 投票
1 回答
124 浏览

stimulusjs - 使用 rails 和stimulusJS 运行 Chart.js 示例

我想使用StimulusJS在 Ruby on Rails中运行Chart.js的第一个示例。但由于某种原因,它只是渲染了一个空画布(参见 [ 3 ])。

这是html:

这是我的刺激控制器:

我错过了什么?

空画布的屏幕截图

0 投票
0 回答
61 浏览

ruby-on-rails - Rails & Turbo/Hotwire:防止用户直接访问视图

在常规的 Rails 7 应用程序中,如果您构建一个列出推文的 #index 操作,并且您希望用户能够内联编辑推文,您可以执行以下操作:

然后在tweets/edit.html.erb

即使很难,我想阻止用户直接点击 URL /tweets/1/edit,以便edit.html.erb只能通过 Turbo 帧请求访问。

然而,这些编辑请求(不是 turbo_stream 表单提交)实际上只是一个常规的 HTML 请求(它Processing by TweetsController#edit as HTML在控制台中打印),所以通过这样做:

我不能阻止用户直接访问 /tweets/1/edit,因为它不是涡轮流。

在 Rails UJS 的好日子里,这可以通过限制控制器响应来轻松实现format.js,如下所示:

或者只edit.js.erb在 views 文件夹中提供一个文件,因为如果用户直接请求 /tweets/1/edit (因为这将是一个 HTML 请求),则不会提供 HTML 请求。

有什么方法可以使用 Hotwire 和 Turbo 达到同样的效果?

0 投票
0 回答
53 浏览

ruby-on-rails - 用于切换排序的 Turbo 链接

我在这里关注 Chris Olivers 指南:https ://gorails.com/episodes/datatables-from-scratch-using-hotwire

我有

下面是issues运行良好的涡轮框架 - 表格使用涡轮进行排序/过滤。

我想要做的是让按钮作为切换到排序 asc / desc。对于普通的非涡轮应用程序,我将在视图中构建一些逻辑并将按钮作为普通链接。

当我键入此内容时,我想知道是否将按钮更改为链接,然后将其包装在另一个框架中,并让控制器在表格排序时以某种方式更新按钮?我只是为此构建一个刺激控制器吗?

对于上下文,这仅在移动视图中,但如果用户手动切换表格并切换到移动视图,则需要更新链接/按钮。

我怀疑我错过了一个更直接优雅的解决方案 - 寻找替代方案或确认上述两个想法是最好的方法。

0 投票
0 回答
94 浏览

ruby-on-rails - 为什么 format.turbo_stream 导致页面跳转到顶部?

我有一张表,它构成了一个非常复杂的时间表。每个 tr 都有一个唯一的 dom id。在呈现日程表时,日程表的时间跨度的持续时间决定了 colspan 属性。例如,一个 9 天的计划跨度将跨越 9 个 tds 并且看起来像一个部分。信息量太大了,真的。

每个 colspan td 都有一个简单的下拉菜单,提供一些快捷方式,例如编辑和删除。整个表被包裹在一个 turbo_frame_tag 中,所以所有的链接(没有 turbo_frame: '_top')都会响应 turbo_stream 格式。删除链接是一个 button_to....来触发销毁操作中的 turbo_stream 响应。

这一切的功能实际上是完美的。如果用户单击给定计划块的下拉列表,单击删除链接... :destroy 操作被命中,记录被销毁,并且该操作响应 turbo_stream...替换整个表行。

问题是......由于某种原因,内容没有在我眼前更新。相反,页面跳回到顶部(没有页面刷新),如果我向下滚动到我所在的位置......内容已通过 TURBO 更新。我记得在老派 JS 中遇到过这样的问题,但为什么 turbo_stream 也会这样做呢?而且,我能做些什么来阻止它吗?

在这样的表中使用 div 不会违反任何标准,但我不禁认为将其转换为由标签等构建的 sudo 表可能会更好。我想知道这样做是否也有帮助上述问题。我不确定为什么会这样,但有时操纵表格似乎会做一些奇怪的事情。

谢谢!