如何在 ruby​​ on rails 和 javascript 中使用 data-post 接收数据

Posted

技术标签:

【中文标题】如何在 ruby​​ on rails 和 javascript 中使用 data-post 接收数据【英文标题】:how to receive data using data-post in ruby on rails and javascript 【发布时间】:2021-10-02 01:57:53 【问题描述】:
<a class="new_thread" data-post="<%= post.id %>">Button</a>

我试图将数据发送到 javascript

$('.new_thread').on('click', async evt => 
        evt.preventDefault();
        const $tgt = $(evt.target);
        const $anchor = $tgt.is('a') ? $tgt : $tgt.parents('a');
        const post_id = $anchor.attr('data-post');
        const thread = document.getElementById("new_thread_modal_" + post_id);

        if (thread.style.display === "none") 
            thread.style.display = "block";
         else 
            thread.style.display = "none";
        
    )

当我单击该按钮时,javascript 文件不起作用。我收到以下错误

Uncaught (in promise) TypeError: Cannot read property 'style' of null
    at htmlAnchorElement.<anonymous> (comments.self-05d964752f9f39ac858194974bab2f9f098c99c773368326d9bde8e452bae945.js?body=1:265)
    at HTMLAnchorElement.dispatch (jquery.min.js:3)
    at HTMLAnchorElement.r.handle

之前,我使用 onclick,但现在我尝试使用 data-post 发送数据。当我试图在 logcat 中打印一些东西时,我注意到我可以得到输出。但是,我怎样才能接收我使用 data-post 发送的数据?

【问题讨论】:

【参考方案1】:
$('.new_thread').on('click', async evt => 
        evt.preventDefault();
        const $tgt = $(evt.target);
        const post_id = $tgt.attr('data-post');
        const thread = document.getElementById("new_thread_modal_" + post_id);

        if (thread.style.display === "none") 
            thread.style.display = "block";
         else 
            thread.style.display = "none";
        
    )

这对我有用。

【讨论】:

以上是关于如何在 ruby​​ on rails 和 javascript 中使用 data-post 接收数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ruby-on-Rails 中生成 PDF 表单

如何在 ruby​​ on rails 中获取控制器和操作列表?

Ruby on Rails - 如何在 Rails 方法中使用 HTML 坐标?

如何通过 websockets 在 ruby​​ on rails 和 reactJS 之间发送数据

如何注销 Facebook - 在 Rails 应用程序中使用代码(Ruby on Rails Omniauth)

如何在 ruby​​ on rails 中更改路线?