如何通过 StimulusJS 远程渲染/获取模板?

问题描述

以下是我想在特定事件发生后添加到 HTML 中的代码

<div class='comment-form' data-controller='comment'>                        
  <form action='' data-action='comment#createComment'>                    
    <div class='comment-form__title'>Add your reply:</div>                
    <textarea class='comment-form__textarea' placeholder='Type in your reply' data-comment-target='commentText'></textarea>
    <input type="submit" value="Submit" class='btn-secondary' >           
  </form>
</div>

截至目前,我能找到的唯一方法如下:

  post.insertAdjacentHTML(`<div class='comment-form' data-controller='comment'>                        
  <form action='' data-action='comment#createComment'><div class='comment-form__title'>Add your reply:</div><textarea class='comment-form__textarea' placeholder='Type in your reply' data-comment-target='commentText'></textarea><input type="submit" value="Submit" class='btn-secondary'></form></div>`)

我正在寻找一种通过服务器代码(阅读:Rails)呈现此模板的方法,而不是我在 JS 中对其进行硬编码。

附:

在撰写本文时,discourse for StimulusJS 已关闭,我可以找到一个与我在这里提出的问题类似的问题的链接https://discourse.stimulusjs.org/t/fetching-a-partial-on-click/1297,在 Stackoverflow 上,我找不到相关问题到此为止。

解决方法

如果您希望持续呈现评论表单。您可以像这样使用循环:

 <div class='post-comments-section'>
    <% post.comments.each do |comment| %>
      <div class="post-comments">
        <p>
          <b><%= comment.user.name %>:</b> <%= comment.content %>
        </p>
        <span> <%= comment.created_at.strftime("%Y/%m/%d") %> </span>
      </div>
    <% end %>

    <%= form_for(post.comments.new,url: post_comments_path(post)) do |form| %>
      <%= form.text_field :content,id: :comment_content,class: 'form-control',placeholder: 'Add new Comment' %>
      <%= form.submit 'Comment',class: 'btn btn-secondary' %>
    <% end %>
  </div>

而且,如果您想添加一些特定的东西。您可以使用条件从控制器添加部分。

def create
  if comment.create 
    render partial: "posts/comment"
  end
end

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...