问题标签 [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.
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。
谢谢。
ruby-on-rails - Rails + Hotwire:Turbo 不会在更改子域的链接上触发
根据文档:
默认情况下,Turbo Drive 仅加载与当前文档具有相同来源(即相同协议、域名和端口)的 URL。对任何其他 URL 的访问会退回到整个页面加载。
但是我想让 Turbo 在子域之间(在同一个基域内)工作。有没有办法做到这一点?
javascript - 如何在rails 7中使用没有wepacker的条纹元素?
我正在使用 Rails 7.0.0.alpha2,我想集成条带元素(从条带中使用)。我没有 webpacker,但我有热线一起导入映射(负责 javascript 包)和刺激(Javascript 框架)
我有点迷茫,因为我无法正常使用 javascript 在内部将条带集成到我的应用程序中
如果有人将条纹元素与 rails 7 一起使用(或与刺激 js 一起使用)并且可以给我一些帮助,我将非常感激
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 看起来像这样:
非常感谢!
ruby-on-rails - 在 Hotwire 中使用 Turbo 进行延迟加载
我希望能够在我的索引页面中延迟加载数据/记录。
为问题提供更多背景信息;
可以说我有一个Post
,它有n
数量Comments
。评论显示在帖子的正下方,并且可以滚动以查看所有这些评论。我不想在页面加载时加载帖子的所有评论,我只想在页面加载时加载前几条评论,并在我向下滚动时懒惰地加载其余评论。
我阅读了一些有关使用 turbo 延迟加载的相关文章,但我无法清楚地了解它是如何工作的,因为它们中的大多数只提供了一个简短的想法。如果有人能阐明我的困惑或提及我可能错过的资源,我将不胜感激。谢谢。
ruby-on-rails - 重新加载实例变量热线
我的 index.html.erb 中有一个产品计数器,如下所示:
@products
在控制器方法中实例化如下:
在控制器中,我有一个删除操作,当它成功时,它会重定向回索引页面:
但是我@products.count
的没有更新。我正在使用带有 Hotwire 的 Rails 7。
查看我的日志,重定向时会发生以下情况:
实例变量是否在重定向时自动重新加载,如果没有,我怎样才能让它重新加载?
stimulusjs - 使用 rails 和stimulusJS 运行 Chart.js 示例
我想使用StimulusJS在 Ruby on Rails中运行Chart.js的第一个示例。但由于某种原因,它只是渲染了一个空画布(参见 [ 3 ])。
这是html:
这是我的刺激控制器:
我错过了什么?
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 达到同样的效果?
ruby-on-rails - 用于切换排序的 Turbo 链接
我在这里关注 Chris Olivers 指南:https ://gorails.com/episodes/datatables-from-scratch-using-hotwire
我有
下面是issues
运行良好的涡轮框架 - 表格使用涡轮进行排序/过滤。
我想要做的是让按钮作为切换到排序 asc / desc。对于普通的非涡轮应用程序,我将在视图中构建一些逻辑并将按钮作为普通链接。
当我键入此内容时,我想知道是否将按钮更改为链接,然后将其包装在另一个框架中,并让控制器在表格排序时以某种方式更新按钮?我只是为此构建一个刺激控制器吗?
对于上下文,这仅在移动视图中,但如果用户手动切换表格并切换到移动视图,则需要更新链接/按钮。
我怀疑我错过了一个更直接优雅的解决方案 - 寻找替代方案或确认上述两个想法是最好的方法。
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 表可能会更好。我想知道这样做是否也有帮助上述问题。我不确定为什么会这样,但有时操纵表格似乎会做一些奇怪的事情。
谢谢!