Rails 3 js块:使用jquery片段或渲染片段作为文本渲染部分?

时间:2011-05-19 11:15:18

标签: jquery ruby-on-rails-3

在过去的四年里,在使用rails 1& 2之后,我正在研究第一个'真实'(而不是玩游戏)rails 3项目。在destroy动作的js块中,我想做一些典型的事情:删除页面上包含已删除资源的div。

我无法决定是否最好像这样渲染出destroy.js.erb文件:(有问题的资源是'note',方法.dom_id只返回一个字符串,如“note _#{note。 ID}”。)

方法A:渲染js视图文件

#in controller
  format.js

#in views/notes/destroy.js.erb
$('#<%= @note.dom_id %>').remove();

这具有保持控制器完全清洁和标准的优点。

方法B:将js放入控制器:

#in controller
format.js { render :text => "$('##{@note.dom_id}').remove()" }

这样做的好处是可以让查看控制器代码的人立即看到正在发生的事情,而无需寻找包含一行代码的视图文件。另一方面,它破坏了MVC。

你怎么看?哪个更“正确”,“标准”等?还有第三种(第四种,第五种)更好的方式吗?

1 个答案:

答案 0 :(得分:3)

我倾向于遵循方法A ,即使您可能只有几行代码。原因是你可能有一个队友看到方法B 并决定当你需要在渲染中添加更多JavaScript时,以内联方式进行操作是正确的方法。内联JavaScript可以(根据我所读过的内容)用于非常简单的单行,但即使这样也不建议使用。

如果您想避免查看正确的JS视图文件,您始终可以呈现特定文件,而不是遵循“文件 - &gt;控制器操作”命名约定。这样,您正在使用的确切js.erb文件在控制器中是清晰的。