【发布时间】:2019-10-21 12:15:18
【问题描述】:
我有一个带有 VueJS 2.0 和 Webpacker 的 Rails 6 应用程序。一切正常,直到我使用 Rails 通过 POST 提交表单。我得到一个空白页面,但如果我刷新,一切都会再次正常。
我尝试使用$mount("#app") 无济于事
我的 application.js 看起来像:
require("@rails/ujs").start()
import Vue from "vue/dist/vue.esm";
import ExampleComponent from "../components/example_component.vue";
document.addEventListener('DOMContentLoaded', () => {
var app = new Vue({
el: '#app',
components: {
ExampleComponent
},
})
});
我的 application.html.erb 看起来像:
<%= javascript_pack_tag 'application' %>
<div id='app'>
<%= yield %>
</div><!--/#app-->
我的 Rails 控制器返回以下内容:
Started PATCH "/books/fsaddsdsf-1cb1c13b8fc6"
Processing by BooksController#update as HTML
Redirected to http://localhost:3000/books
Started GET "/books/fsaddsdsf-1cb1c13b8fc6"...
Processing by BooksController#show as HTML
我的 rails 表单只是标准的 <%= form_with %> 表单,打开了 local: true。它们在没有 javascript 的情况下也能完美运行。
控制台中没有任何 Rails 或 VueJS 错误消息,这很奇怪。
【问题讨论】:
-
检查你的 Rails 服务器日志:它会指出发生了什么。
-
我们确实需要您的 Rails 路由处理程序代码。你只返回一个json响应吗?还是某种观点(我不熟悉 Rails 术语)?
-
@JoshBrody,Rails 服务器日志只返回一个正常的 POST,然后重定向到 show.html.erb 视图。它只是从默认的 rails scaffold 命令生成的。
-
@GONG,这不是 JSON 响应,表单 POST,然后被重定向到 HTML 页面。页面空白肯定是javascripts的错误,如果我阻止Javascript,表单提交工作正常。
-
你能告诉我们 POST 动作并返回 js 响应吗?基本上提交表单后,它会加载你返回的js格式。我不是 Vue 大师,我只是觉得你在 POST 操作后返回的 js 文件有问题
标签: javascript ruby-on-rails ruby vue.js webpack