您可以使用 Dojo Toolkit 中的 TitlePane 来做到这一点,并且可能有一个与 jQueryUI 类似的小部件。
我只能说 Dojo Toolkit 的版本
你会做这样的事情:
<div data-dojo-type="dijit/TitlePane" data-dojo-props="href: '/blah', title: '<%= submission.title %>', open: false">
您可以在应用程序布局中包含此内容,以便从 CDN 加载 lite 使用 dojo:
<script data-dojo-config="async: true, parseOnLoad: true"></script>
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.9.1/dojo/dojo.js"></script>
TitlePane 已连接,以便在展开时自动加载提供给 href 参数的内容。
虽然这不完全是直接的 rails 解决方案,但它可以用作替代方案。
对于 Rails 解决方案,您可以简单地对呈现部分的控制器使用 AJAX 调用。您甚至可以使用
def blah
@submission = Submission.find(...)
respond_to do |format|
format.html # default render
format.js # js behavior
end
end
然后是 blah.html.erb
<%= render partial: 'submission/submission', object: @submission %>
与部分
<div id='submission-<%= submission.id %>'>
<div id='submission-<%= submission.id %>-title'><%= link_to(submission.title, 'blah/blah', remote: true) %></div>
<div id='submission-<%= submission.id %>-content'></div>
</div>
还有一个 blah.js.erb
$.get('/submission/content', function(data) { $('#submission-<%= @submission.id %>-content').html(data) } );
以及进入 submits_controller 的路线
def content
@submission = Submission.find(...)
render text: @submission.content
end
这可能不是一个确切的解决方案,但希望它能让你走上正确的道路。