我应该在哪个文件夹中放置“全局”共享部分模板?

时间:2011-07-01 15:40:01

标签: ruby-on-rails ruby ruby-on-rails-3 templates dry

我正在使用Ruby on Rails 3.0.7,我计划使用部分模板。我的应用程序中的所有类都使用相同的部分,所以我必须决定在哪里找到所有这些。

将“全局”共享部分模板放在lib文件夹中是一个好主意吗?如果不是,选择文件夹的常用做法是什么?关于如何正确命名和加载该文件夹的任何建议?

3 个答案:

答案 0 :(得分:54)

标准是将所有共享部分放在app/views/shared中,并将其引用为

render :partial => 'shared/partial_name'

如果您有一个标准的“列表中的行”部分(例如,对于索引页),您可以使用共享部分,如:

# To render a single object row:
render :partial => 'shared/item', :locals => { :item => @item }
# Or to render them all:
render :partial => 'shared/item', :collection => @items

答案 1 :(得分:16)

Rails 4:

/app/views/application

中填写您打算使用的部分内容

然后,您可以轻松地在应用程序的任何位置:

render partial: 'partial_name', variable_name: variable

额外的好处是,您可以通过重新定义/app/views/controller_name/_partial_name.html.erb中部分含义的内容来覆盖特定视图空间中的部分,然后对部分的调用将引用您更具体的上下文。如果不存在,则会使应用程序级别变为部分。

建议来自Thoughtbot

答案 2 :(得分:4)

惯例是将它们置于app/views/shared

之下

如果你有很多部分内容,我建议你将它们放到该文件夹​​的子目录中,无论你的应用程序有什么意义,因为在一个目录中有很多部分内容通常不是一个好习惯。