0

因此,以下是我想在特定事件发生后添加到 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 中对其进行硬编码。

PS:

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

4

1 回答 1

1

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

 <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
于 2021-01-03T03:29:24.467 回答