警告:这里是菜鸟。
我知道这是一个微不足道的主题,但我很难弄清楚如何通过将部分视图移入助手来简化我的视图。例如,我一直读到您观点中的条件是提取到帮助程序中的主要候选者,但我真的找不到这方面的例子,而且我实现这一目标的尝试失败了。
例如,假设我有:
#index.html.erb
<% for beast in @beasts do -%>
<% if beast.dead? -%>
<%= beast.body %>
<%= link_to "bury", bury_beast_path( :id => beast.id ) %>
<% else -%>
<%= beast.body %>
<%= link_to "kill!", kill_beast_path( :id => beast.id ) %>
<% end -%>
<% end -%>
在我看来,这让我有点恼火,但我怎么能把它移到一个助手身上呢?如果可能的话,进一步简化它。(我在某处读过条件语句不好,但没有它们你怎么能编程任何东西,这超出了我的理解。)
另一个例子:我需要id
我的body
标签格式为controller_action
. 到目前为止,我得到的最好的是:
#index.html.erb
<body id="<%= controller_action %>">
……和……</p>
#application_helper.rb
def controller_action
@id = @controller.controller_name + "_" + @controller.action_name
end
我不是专家,但这对我来说仍然很丑陋。
为了让事情变得更复杂,Ryan Singer 说了我喜欢的话:将 ERB 视为图像标签,使用助手“揭示意图”。然后在接下来的呼吸中说你不应该在帮助程序中使用 HTML,因为那是通往地狱的道路。怎么回事?两者如何兼容?如果到了可以只在视图中声明行为的地步,那么肯定应该有很多 HTML 需要在幕后渲染吗?我无法掌握。
所以,基本上就是这样。如果有人能就此分享一些想法,或者指出我对这个主题的一些很好的深入阅读,我将不胜感激——我发现它在网络上的报道非常薄弱。我已经用谷歌搜索了它,但谁知道呢。