【发布时间】:2009-11-18 15:37:41
【问题描述】:
在 rails 2 中创建隐藏和显示效果的最佳方法是什么。是使用 JQuery 类型的解决方案,还是内置更好、更好或更容易的东西?
【问题讨论】:
标签: jquery ruby-on-rails css ruby show-hide
在 rails 2 中创建隐藏和显示效果的最佳方法是什么。是使用 JQuery 类型的解决方案,还是内置更好、更好或更容易的东西?
【问题讨论】:
标签: jquery ruby-on-rails css ruby show-hide
最简单的方法是在视图中使用link_to_function:
<%= javascript_include_tag :defaults %>
<%= link_to_function "toggle", "$('thing_#{@thing.id}').toggle()" %>
<p id="thing_<%= @thing.id %>">
<b>Body:</b>
<%=h @thing.body %>
</p>
另一种方法是使用 RJS,但这在很大程度上取决于您的应用程序的方式。这样,您必须设置控制器以查找 RESTful 操作之外的自定义操作,或者让现有操作查找 XHR 请求(使用“if request.xhr?”)
RJS 非常简单:
page["thing_#{@thing.id}"].toggle
就个人而言,我会说除了 $(element).toggle() 之外的任何东西都应该在视图之外进入它自己的 RJS,因为视图应该大部分没有逻辑,但可能有很多对此意见不一。
至于 javascript 框架,除非我正在做一些真正需要原型/scriptaculous 中不可用的东西,否则为了简单起见,我将坚持使用默认值。
【讨论】:
Rails 捆绑了 Prototype/Scriptaculous javascript 库,但是否要使用它们取决于您。最后,您必须使用某种 Javascript,Rails 没有什么特别的内置功能可以神奇地为您做到这一点。
我个人推荐jQuery——我发现它学起来更快,更强大和可扩展。
【讨论】:
$('#elementid').hide();
$('#elementid').show();
$('.elementClassname').show();
$('.elementClassname').hide();
你也可以给出参数
$('.elementClassname').show('slow');
$('.elementClassname').show('normal');
$('.elementClassname').show('fast);
也可以是数值
$('.elementClassname').show(600);
你也可以使用切换
$('.elementClassname').slideToggle();
【讨论】:
JQuery is an excellent choice,无论在何种平台上,在 Ruby 上的效果都与在 ASP.NET/MVC 上一样好
【讨论】: