首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用button_to与params + js改变与Rails 7[刺激反射]

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

Stack Overflow用户
提问于 2022-07-19 08:43:16
回答 1查看 276关注 0票数 0

我想举办这样的活动:

  1. 单击特定按钮
  2. 发送一些参数到自定义控制器动作
  3. 响应js

更改视图

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

按照我们以前的做法:

视图:

代码语言:javascript
复制
<%= button_to "action", custom_action_path(todo), method: put, remote: true, data: {param_1: "x" } %> 

todo_controller:

代码语言:javascript
复制
def custom_action
   # ...
end

app/views/todo/custom_action.js.erb

代码语言:javascript
复制
//some js changes in view

我知道通过刺激Js,我们可以做到:

视图:

代码语言:javascript
复制
<%#= 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

代码语言:javascript
复制
import { Controller } from "@hotwired/stimulus"

export default class extends Controller {

         update_installment_status(event) {
         //do something
          }

}

,但我的问题是:如何发送这些命令并将数据传递给后端控制器以更改数据库记录,然后才能使用js修改视图?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-07-19 10:28:52

您可以使用turbo_stream更新html,然后js可以附加到刺激控制器目标,如下所示。

视图

代码语言:javascript
复制
    <%= button_to "action", custom_action_path(todo, param_1: "x"), method: put, remote: true %> 

custom_action.turbo_stream.erb

代码语言:javascript
复制
    <%= turbo_stream.replace("xyx", partial: "blah/blah") %>

如果您想在执行js代码之后运行一些js代码,可以添加到下面的方法中。

charges_controller.js

代码语言:javascript
复制
    static targets = ["xyx"]

    xyxTargetConnected(target) {
        # add the js code you want to run anytime thexyz html container is connected
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73033824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档