我在现有的rails应用程序上工作。 对于某些页面,我需要在"内容"中添加一个类。 div和其他div 它位于application.html.erb文件中。 假设我有div class =" content",对于某些页面我需要div class =" content widgetgrid"。我想知道"正确的方式"要做到这一点,还是更重要的是Rails-y这样做的方法?
我考虑过定义一个实例变量并将其传递给application.html.erb文件。好吧:
任何建议都将受到高度赞赏。 :)
答案 0 :(得分:1)
如果只是一个简单的事情,例如一个不同的类,那么你可以使用content_for
,而不是制作全新的布局,如here所述。在你看来,你会做
<% content_for :my_additional_classes, 'some classes you want' %>
然后在相应位置的布局application.html.erb
中阅读它。例如
# Layout stuff ...
<div class="always_used_class <%= yield :my_additional_classes %>">
# content...
</div>
# More layout stuff ...
编辑:这假设你想在视图中设置这个内容(这是有道理的,因为视图相关的东西应该在视图中定义,这是一种棘手的方式)。如果确实想要在控制器中执行此操作,您还可以使用以下内容设置内容
view_context.content_for(:my_additional_classes, 'some_additional_class')
答案 1 :(得分:0)
在这种情况下,我很可能会使用各种布局文件。您可以通过以下方式在Rails中应用特定于控制器的布局:
select id_obj, min(name_obj), max(tot_obj) tot_obj
from (select a.id_obj, min(b.name_obj), sum(a.tot_obj) tot_obj
from detailsell a join object b using (id_brg)
group by id_obj) x
group by id_obj;
您还可以使用控制器中的方法动态加载布局(我们实际上是为使用基于子域的不同布局的应用程序执行此操作。
layout 'some_layout_file'
您也可以在控制器的方法/操作块中设置布局。
有许多不同的方法可以解决你的问题...以上就是我更喜欢接近它的方法。