Rails Rails 5.2 form_for remote: true 请求 js 出现问题

banana · 2018年04月27日 · 最后由 banana 回复于 2018年05月02日 · 1821 次阅读

我的 Rails 版本 5.2.0

form_for 表单代码:

<%= form_for [@chatroom, Message.new], remote: true, method: :post do |f|%><br>
  <%= f.text_area :body, rows: 1, class: "form-control", autofocus: true  %><br>
<% end %>

js 代码:

$("#new_message").submit()

请求过程如下

Started GET "/chatrooms/1/messages" for 127.0.0.1 at 2018-04-26 23:35:35 +0800<br>
  Processing by MessagesController#create as <strong>HTML</strong>

竟然是 html 而不是 js。请问是不是与 rails-ujs 相关,具体是啥原因,该如何解决这个问题?

你不要自己写 js 提交,创建一个表单提交按钮 来提交试试

目测是 rails-ujs 没生效

@huacnlee @jasl 表单提交是没有问题的,貌似是 ujs 的 bug 的,我查到了相关 github issue https://github.com/rails/rails/issues/29546

既然用的 jquery, 就换为 jquery-ujs 就好了。

这不算个 bug 吧。issue 里给了解决方案:用 Rails.fire 触发事件。我在项目里都是这么用的。

mingyuan0715 回复

是的,当然看到了下面的解决方法

需要 登录 后方可回复, 如果你还没有账号请 注册新账号