问题描述
<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