我想举办这样的活动:
更改视图
但是我使用的是Rails 7,现在我们已经有了Hotwire/Stimulus来制作它。
按照我们以前的做法:
视图:
<%= button_to "action", custom_action_path(todo), method: put, remote: true, data: {param_1: "x" } %> todo_controller:
def custom_action
# ...
endapp/views/todo/custom_action.js.erb
//some js changes in view我知道通过刺激Js,我们可以做到:
视图:
<%#= button_to "action", nil, remote: true,
data:
{
controller: "charges",
action: "click->charges#update_installment_status",
charges_code_param: charge.code,
charges_action_param: "set as paid"
}
%>charges_controller.js
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
update_installment_status(event) {
//do something
}
},但我的问题是:如何发送这些命令并将数据传递给后端控制器以更改数据库记录,然后才能使用js修改视图?
谢谢。
发布于 2022-07-19 10:28:52
您可以使用turbo_stream更新html,然后js可以附加到刺激控制器目标,如下所示。
视图
<%= button_to "action", custom_action_path(todo, param_1: "x"), method: put, remote: true %> custom_action.turbo_stream.erb
<%= turbo_stream.replace("xyx", partial: "blah/blah") %>如果您想在执行js代码之后运行一些js代码,可以添加到下面的方法中。
charges_controller.js
static targets = ["xyx"]
xyxTargetConnected(target) {
# add the js code you want to run anytime thexyz html container is connected
}https://stackoverflow.com/questions/73033824
复制相似问题