gpt4 book ai didi

ruby-on-rails - Rails/AJAX部分渲染

转载 作者:行者123 更新时间:2023-12-03 15:57:56 24 4
gpt4 key购买 nike

我制作了一个具有project模型的应用程序。该模型中存储了一些信息,并且用户可以向project添加注释(使用comment模型)。在项目的显示 View 中,我希望用户能够在“信息”部分(包含项目信息)和“评论”部分(包含在项目上写的评论)之间切换。 AJAX。因此,我将有两个按钮:“信息和评论”。

现在,我知道了如何基于“远程链接”渲染局部文件,但是我还必须找出单击了哪个链接。到目前为止,单击一个链接时,我可以呈现一个局部 View ,如下所示:

// In show.html.haml

= link_to("Information", :project, :id => "link_one", :remote => true)
= link_to("Comments", :project, :id => "link_two", :remote => true)

#partial_window


// In show.js.haml
$("#partial_window").html("#{j(render("comments"))}")

现在,当我单击其中一个链接时,这将 _comment.html.haml部分渲染。我需要知道的是如何检查单击了哪个链接,然后呈现适当的部分: _info.html.haml_comments.html.haml

在此先感谢您的帮助!

最佳答案

这样的事情应该起作用。我们将使用嵌套路由。查看ryan's screencast(有点旧,但是可以理解)或更多updated version about nested forms(使用相同的原理)。您需要为更新的版本付费,但是我发现我的RailsCast订阅每月超过9美元。另外,这是docs的示例。
config/routes.rb

resources :projects do
resources :comments
end
comments_controller.rb
class CommentsController < ApplicationController
def index
project = Project.find params[:project_id]
@comments = project.comments
respond_to do |format|
format.html #responds with default html file
format.js #this will be the javascript file we respond with
end
end
end
views/comments/index.js.erb
$('#holderDiv').empty().append('<ul> <%= j render @comments %> </li>')

这使用了一个漂亮的rails,它查找 comment部分,并为 @comments中的每个注释呈现它。 j helper转义了javascript,几乎将渲染的部分插入到 append函数中。
views/comments/_comment.html.erb
 <li> <%= @comment.description %> </li>

因此,我们现在清除了 #holdingDiv并插入了我们的注释。对于 information,也许像这样:
projects_controller.rb
class ProjectsController < ApplicationController
def index
@project = Project.find params[:id]
respond_to do |format|
format.html
format.js
end
end
end
views/project/index.js.erb
 $('#holderDiv').empty().append('<%= j render 'information', information: @project.information %>')
views/project/_information.html.erb
<h2>
<%= information.title %>
</h2>
<p>
<%= infomration.details %>
</p>

然后,您的远程链接将类似于:
= link_to("Information", @project, :remote => true)
= link_to("Comments", project_comments_url(@project), :remote => true)

我必须对您的数据结构做出一些假设。让我知道我在哪里让您感到困惑。

另外,我确信我有一些错别字,对此感到抱歉。我没有对此进行测试,只是跌落了脑袋。

关于ruby-on-rails - Rails/AJAX部分渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13941215/

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