gpt4 book ai didi

jquery - Rails Ajax 使用 RJS 隐藏/显示切换链接

转载 作者:行者123 更新时间:2023-12-01 05:08:28 25 4
gpt4 key购买 nike

我希望用户能够对提交的内容发表评论。在每个提交的下方,我希望有一个显示“评论 (2)”的链接...当您单击此链接时,它会动态加载到评论中,以及一个用于添加新评论的简单表单。当用户提交新评论时,我希望它在列表底部异步加载。

我现在的工作方式如下:

// index.html.erb

<p class="comments_view_toggle">
<%= link_to_remote("▼ view comments (#{answer.comments.count})", :controller => "comments", :action => "show", :submission => submission, :update => "comment") %>
</p>

// comments_controller.rb

def show
@submission = Submission.find(params[:submission])
respond_to do |format|
format.html { redirect_to root_url }
format.js
end
end

// show.rjs

page.insert_html :bottom, :comment, :partial => 'show', :locals => { :submission => @submission }

// _show.html.erb

<ul id="comment_list">
<%= render :partial => 'comments/comment', :collection => submission.comments %>
</ul>

<div class="clear"></div>

<% form_remote_for Comment.new do |f| %>
<%= hidden_field_tag(:submission_id, answer.id)%>
<%= hidden_field_tag(:user_id, current_user.id)%>
<%= f.text_area :message %>
<%= f.submit "comment", :disable_with => 'commenting...' %>
<% end %>

我什至还没有研究切换功能的第二部分(隐藏),因为每当我单击链接时,它都会重新加载链接下方的整个页面,而不是仅运行部分页面,我不知道为什么。它似乎没有正确传递参数。我这一切都错了吗?你能指出我正确的方向吗?

最佳答案

您可以使用原型(prototype) ajax 库来完成此操作,该库默认随 Rails 一起提供。或者您可能想使用 JQuery 来实现,

这是执行此操作的一种方法

假设您有以下 html 页面

<div id="submission">
// your submission details goes here
</div>
//here you will have your link says "comments"
<div id="comments">

</div>

点击“评论”链接后,您可以使用 link_to_remote 加载评论 div 内的所有评论

例如: link_to_remote "查看评论", :update => "评论", :url => { :action => "评论", :id => 提交.id }

所以你的 Controller 看起来像

class SubmissionsController < ApplicationController
#your other code goes here

def list
#code to generate the comments list
render :partial => 'comments_list', :object => @comments
end
end

您可以拥有列表评论“_comments_list”的一部分

关于jquery - Rails Ajax 使用 RJS 隐藏/显示切换链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3693142/

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