提问人:Fernando Schlosser 提问时间:9/20/2023 最后编辑:Fernando Schlosser 更新时间:9/29/2023 访问量:118
Turbo Rails 在生产环境中不工作
Turbo Rails not working in production environment
问:
我已经成功地将我的第一个 Rails 应用程序部署到了 Digital Ocean Droplet 上。 我已经在本地计算机上开发了该应用程序,并且某些 Turbo Frames 正常工作,但在生产环境中,Turbo Rails 根本无法工作。
我已经阅读了这个线程 Turbo-rails 在生产中不起作用,但这不是我的情况,因为我在浏览器控制台中没有看到错误。
我使用的是 ruby 3.1.3,rails 7.0.6。 链接用作 HTML 常规链接。
我试过做:
RAILS_ENV=production rails turbo:install
我也试过做:
RAILS_ENV=production rails turbo:install:redis
并重新加载nginx服务器,但它不起作用。
在文件中没有错误,只是显示当我单击应该用作涡轮框架的链接时,它的行为类似于 HTML 常规链接。production.log
这是我第一次在这里提问,所以如果缺少细节,请原谅我。
编辑
我所说的不工作是指我在turbo_frame_tags中的链接不仅会导致更新涡轮框架内的内容,而且会刷新整个页面。 我绝对不确定我所有的 javascript 组件是否都正确初始化。由于我是该语言的新手,我已经验证了所有可能的内容,如果有帮助,运行 assets:precompile 不会抛出错误
这些是代码中不起作用的部分:
edit.html.erb:
<div class="top-padding">
<%= turbo_frame_tag "new_item" %>
<%= link_to "Agregar ítem", new_invoice_invoice_item_path(@invoice), data: { turbo_frame: "new_item" }, class: "btn btn-info" %>
</div>
new.html.erb:
<%= turbo_frame_tag "new_item" do %>
<%= render 'form' %>
<% end %>
当我在开发中单击 edit.html.erb 文件中显示的link_to时,它会在 edit.html.erb 页面上的“new_item”turbo_frame_tag内呈现 new.html.erb 文件中的代码。
在开发环境中,控制台日志显示以下内容:
Started GET "/invoices/249/invoice_items/new" for ::1 at 2023-09-20 08:30:12 -0300
Processing by InvoiceItemsController#new as HTML
Parameters: {"invoice_id"=>"249"}
User Load (1.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 2], ["LIMIT", 1]]
↳ app/controllers/application_controller.rb:7:in `set_current_user'
Invoice Load (1.0ms) SELECT "invoices".* FROM "invoices" WHERE "invoices"."id" = $1 LIMIT $2 [["id", 249], ["LIMIT", 1]]
↳ app/controllers/invoice_items_controller.rb:4:in `new'
**Rendering layout C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/turbo-rails-1.4.0/app/views/layouts/turbo_rails/frame.html.erb
Rendering invoice_items/new.html.erb within layouts/turbo_rails/frame**
ProductCategory Load (0.9ms) SELECT "product_categories".* FROM "product_categories" ORDER BY nombre ASC
↳ app/views/invoice_items/_form.html.erb:5
Rendered invoice_items/_form.html.erb (Duration: 292.5ms | Allocations: 4561)
Rendered invoice_items/new.html.erb within layouts/turbo_rails/frame (Duration: 297.3ms | Allocations: 4954)
Rendered layout C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/turbo-rails-1.4.0/app/views/layouts/turbo_rails/frame.html.erb (Duration: 317.0ms | Allocations: 5249)
Completed 200 OK in 351ms (Views: 328.0ms | ActiveRecord: 3.0ms | Allocations: 7711)
在生产环境中,控制台日志显示以下内容:
I, [2023-09-20T11:32:48.395055 #301414] INFO -- : [e395a581-dda5-4c86-81f5-d45192437773] Started GET "/invoices/58/invoice_items/new" for 190.97.11.201 at 2023-09-20 11:32:48 +0000
I, [2023-09-20T11:32:48.398207 #301414] INFO -- : [e395a581-dda5-4c86-81f5-d45192437773] Processing by InvoiceItemsController#new as HTML
I, [2023-09-20T11:32:48.398298 #301414] INFO -- : [e395a581-dda5-4c86-81f5-d45192437773] Parameters: {"invoice_id"=>"58"}
I, [2023-09-20T11:32:48.465989 #301414] INFO -- : [e395a581-dda5-4c86-81f5-d45192437773] Rendered invoice_items/new.html.erb within layouts/application (Duration: 61.6ms | Allocations: 116>
I, [2023-09-20T11:32:48.468273 #301414] INFO -- : [e395a581-dda5-4c86-81f5-d45192437773] Rendered layout layouts/application.html.erb (Duration: 64.0ms | Allocations: 12766)
I, [2023-09-20T11:32:48.468709 #301414] INFO -- : [e395a581-dda5-4c86-81f5-d45192437773] Completed 200 OK in 70ms (Views: 59.2ms | ActiveRecord: 7.7ms | Allocations: 13874)
更新:以下是 Axel 的建议:
- 我跑了
RAILS_ENV=production rails turbo:install
- 我确实在应用程序/javascript/应用程序.js中
import "@hotwired/turbo-rails"
- 我的布局/应用程序.html.erb文件中确实有
<%= javascript_importmap_tags %>
- 我的config / importmap.rb文件中有该行
pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true
- 我没有app/assets/javascripts文件夹。也许有什么问题?
- 我打开了Netowrk选项卡,并且确实加载了一个turbo.min-something.js文件
- 我试图检查我的本地代码是否与我的生产服务器代码相同,但没有发现任何差异
答: 暂无答案
评论
Rails
console.log("Yo")
application.js
bin/dev