像这样的东西应该工作。我们将使用嵌套路由。查看ryan 的截屏视频(有点旧,但可以理解)或这个关于嵌套表单的更新版本(使用相同的原则)。您必须为更新版本付费,但我发现我的 RailsCast 订阅物超所值,每月 9 美元。此外,这里是示例文档。
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 助手转义 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)
我不得不对你的数据结构做一些假设。让我知道我在哪里让你感到困惑。
另外,我确定我有一些错别字,抱歉。我没有对此进行测试,只是想了想。