gpt4 book ai didi

ruby-on-rails - 刺激 Controller Action 发射两次

转载 作者:行者123 更新时间:2023-12-02 02:33:57 26 4
gpt4 key购买 nike

我是 StimulusJS 的新手,我只想在用户添加新帖子时显示附加在其他帖子后面的帖子内容。一切似乎都正常,但帖子被附加了两次,因此看起来表单已提交了两次。

  <div data-controller="posts">
<div data-target="posts.add">
</div>
<!-- this is from a rails partial but it's all inside the data-controller -->
<%= form_with scope: :post, url: posts_path, method: 'post', data: { action: "post#addBody" } do |form| %>
<%= form.text_field :content, class: "form-control", data: { target: "posts.body"} %>
<%= form.submit class: "btn btn-primary" %>
</div>

实际控制人:

import { Controller } from "stimulus"

export default class extends Controller {
static targets = ["body", "add"]

addBody() {
let content = this.bodyTarget.value;
this.addTarget.insertAdjacentHTML('beforebegin', `<div>${content}</div>`);
}
}

我知道这是有效的,因为它会在表单提交时在页面上显示帖子,但是再次调用该函数并且帖子会出现两次。我已经用 debugger 尝试过,似乎 Stimulus 内部的某些东西正在第二次调用 addBody()

作为上下文,这就是 posts_controller 正在做的事情:

  def create
@post = current_user.post.build(post_params)

respond_to do |format|
if @post.save
format.json {head :ok}
else
raise ActiveRecord::Rollback
end
end

end

最佳答案

事实证明问题出在我的 application.js 文件中。我有:

const application = Application.start()
const context = require.context("../controllers", true, /\.js$/)
application.load(definitionsFromContext(context))

import "controllers"

我不知道这一行:import "controllers"是如何到达那里的,也不知道我认为它做了什么,但删除它后,事情只触发一次。

关于ruby-on-rails - 刺激 Controller Action 发射两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64617503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com