View comment " > -6ren">
gpt4 book ai didi

javascript - 使用 js.erb 文件中的对象渲染部分内容

转载 作者:行者123 更新时间:2023-12-03 06:20:32 25 4
gpt4 key购买 nike

这是我用于呈现评论的索引/帖子

<% @posts = Post.where(user_id: current_user.all_user_ids).order("created_at desc") %>

<%@posts.each do |post| %>
<div id="comment-action">
<button id="<%= "#{post.id}" %>"> View comment</button>
<%= link_to "View Comments", "#post_comments_#{post.id}" %>

<section class="comments-section" id="post_comments_<%= post.id %>" >
<br>
<div id="comments">
<%= render 'commenters/newsfeedcomment', obj: post %>
</div>

<% if current_user == post.user %>
<h6 align="right"><%= link_to 'Edit', edit_post_path(post) %></h6>
<h6 align="right"><%= link_to 'Delete', { :id => post ,:controller => 'posts',:action => 'destroy'} %></h6>
<% end %>
</section>
</div>
<% end %>

现在我将一个对象传递到我的_newsfeedcomment,即 obj: post

这是我的新闻评论

<% obj.commenters.each do |c| %>
<li class = 'comments'>
<br><%= image_tag c.user.profile.avatar.url, size:"50x50" %>
<a href="<%= "#{profile_path(c.user.profile)}" %>">
<%= c.user.profile.firstname + " " + c.user.profile.lastname %></a> : <%= c.comment %>
<br><%= time_ago_in_words(c.created_at) %> ago
</li>

<% if current_user == c.user %>
<%= link_to "Delete comment", [c.post, c], method: :delete %>
<%= link_to "Edit comment", edit_post_commenter_path(c.post, c) %>
<% end %>
<% end %>

我想为我的 ajax 再次呈现我的新闻提要评论

$('#comments').append("<%= j render(:partial => 'commenters/nesfeedcomment', obj: post) %>");

这是我的错误

undefined local variable or method `post' for #<#:0x007f8660e313e8>

我猜 Rails 无法读取我的对象?有什么方法可以让我完成我的项目请有人帮助我...

这是我的 Controller

def create
@comment = @post.commenters.create(params[:commenter].permit(:comment))
@comment.user_id = current_user.id
@comment.save

if @comment.save
respond_to do |format|
format.html {redirect_to posts_path}
format.js
end
else
redirect_to posts_path
end

结束

最佳答案

<%= render 'commenters/newsfeedcomment', obj: post %>

此代码适用于 index.html因为post只是 @posts 中的循环对象

<小时/>

更新:感谢您使用 Controller 进行更新。您需要做的是提供 .js格式回复您的comments_controllercreate行动。

这可以通过提供渲染 View 来完成 app/views/comments/create.js.erb

create.js.erb ,只需:

$('#comments').append("<%= j render(:partial => 'commenters/nesfeedcomment', obj: @post) %>");

$('#comments').append("<%= j render(:partial => 'commenters/nesfeedcomment', obj: @comment.post) %>");

就是这样。

您缺少的只是 post 的定义在你的 block 中,因为它没有被分配为变量,并且 ruby​​ 将其解释为对某些方法 post 的调用- 因此您的错误消息:undefined local variable or method 'post' .

关于javascript - 使用 js.erb 文件中的对象渲染部分内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38890570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com