在rails中创建隐藏和显示效果的最佳方法是什么?是使用JQuery类型的解决方案还是内置的内容更好,更好或更容易?
答案 0 :(得分:5)
最简单的方法是在视图中使用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
就个人而言,我会说除了$(元素).toggle()以外的任何东西都应该在它自己的RJS视图之外,因为视图应该基本上没有逻辑,但可能有很多对此持不同意见。
至于javascript框架,除非我正在做一些真正需要原型/ scriptaculous中不可用的东西,否则为了简单起见,我会坚持使用默认框架。
答案 1 :(得分:1)
$('#elementid').hide();
$('#elementid').show();
$('.elementClassname').show();
$('.elementClassname').hide();
您也可以提供参数
$('.elementClassname').show('slow');
$('.elementClassname').show('normal');
$('.elementClassname').show('fast);
或数字值
$('.elementClassname').show(600);
您也可以使用切换
$('.elementClassname').slideToggle();
答案 2 :(得分:1)
Rails附带了Prototype / Scriptaculous javascript库,但如果您想使用它们,则取决于您。最后你必须使用某种类型的Javascript,没有什么特别内置的Rails会为你神奇地做到这一点。
我个人推荐jQuery - 我发现学习速度更快,功能更强大,可扩展性更强。
答案 3 :(得分:0)
JQuery is an excellent choice在Ruby上的工作方式与在ASP.NET / MVC中的工作方式相同