在我的rails应用程序中,我在多个页面上呈现部分,并且该部分是一个变量。所以目前,假设我有5个页面呈现:partial => “partialname”,部分名称内部是@variable。
我是否可以拥有它以使partialname在@variable实例化内部有自己的动作,而不是从呈现部分的每个动作中调用@variable 5次?
谢谢!
答案 0 :(得分:2)
我会在需要共同行为的所有方法上创建before_filter
。
但是如果你真的希望partial有自己的“动作”,那就制作一个帮助方法来做你想要的任何“动作-y”事情,然后渲染部分。这基本上是相同的。之前我已经做过这个,以制作一个包含需要处理的各种数据的模板类型部分。
答案 1 :(得分:1)
答案 2 :(得分:0)
您可以从视图中加载@variable:
<% @variable = Variable.find(:whatever) %>
但有些人认为这种不良做法不遵守严格的MVC。这确实有利于支持片段缓存开箱即用:
<% cache({:variable_id => :whatever}) do %> <% @variable = Variable.find(:whatever) %> . . . <% end %>
是否有一个在主视图中呈现的通用模型可以委托变量访问?
<%=h @model.variable %>
答案 3 :(得分:0)
那么,这是否是每个请求运行5次代码的问题,你不是吗?就像,你有一个部分,其中是:
@my_var = MyModel.some_expensive_method
如果是这样,您可以将结果缓存在模型中:
def cached_some_expensive_method
@some_expensive_method ||= some_expensive_method()
end