如何使用button_to与params + js变化与Rails 7[刺激反射]



我想要这些事件:

  1. 点击一个特定的按钮
  2. 发送一些参数到自定义控制器动作

但是我使用的是Rails 7,现在我们有Hotwire/Stimulus Js来制作它。

在老式的方式我们做:

视图:

<%= button_to "action", custom_action_path(todo), method: put, remote: true, data: {param_1: "x" } %> 

todo_controller:

def custom_action
# ...
end

app/views/备忘录/custom_action.js.erb

//some js changes in view

我知道有了刺激j,我们可以:

视图:

<%#= 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 ?

谢谢。

你可以使用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
}

相关内容

  • 没有找到相关文章

最新更新