使用Rails 2.3.5,Ruby 1.8.7。
是否有任何插件可以让我的“节目”和“编辑”以及“新”页面具有相同的外观和感觉?我希望能够做以下类型的事情。现在,如果我向模型中添加一个字段,我必须将它添加到edit.html.erb和view.html.erb中。我希望能够相当广泛地指定外观,但我希望“编辑”和“显示”看起来相同(两者之间的例外,也许,但不是很多。)
有没有DRY工具?
基本上,我希望能够使我的“edit.html.erb”成为:
<% plugin_form_helper_for @model do |form_helper| %>
<%= render :partial => 'common_look', :locals => {:helper => form_helper} %>
<% end %>
和show.html.erb是:
<% plugin_show_helper_for @model do |show_helper| %>
<%= render :partial => 'common_look', :locals => {:helper => show_helper} %>
<% end %>
然后“form_helper”和“show_helper”将实现相同的接口(具有一些分支能力,使两者的布局/外观略有不同。)
答案 0 :(得分:3)
答案 1 :(得分:2)
我使用自定义输入/显示辅助函数来执行您所描述的内容。举一个简单的例子,您可以使用这样的函数:
<%= my_field_helper(:model, :field_name) %>
在控制器中,您将@context
变量设置为:show
或:edit
。帮助程序代码包含@context
上的开关,如果是:edit
,则输出类似
<li>
<label>Translation of Field</label>
<input name="model[field_name]" value="???" />
</li>
(可能在所有控制器中使用通用@model
变量,因此可以在所有页面上使用相同的功能 - 或者将@my_model
传递给函数本身)但是@context
时是:show
(或者默认情况下),它会输出如下内容:
<li>
<span class="label">Translation of Field</label>
<span class="value">Field Value</span>
</li>
现在您可以使用相同的确切代码来显示所有字段!您可能希望将该代码拉出到部分代码中,因此您可以轻松地将其包装在一个表单中进行编辑,但不能用于显示,但是关键位可以完成 - 如果您需要添加/移动/删除字段,只有一个地方你必须这样做。
希望这有帮助!
答案 2 :(得分:0)
在_form.html.erb中包含该代码片段,然后在类似show.html.erb的常见部分中调用它
然后在你的控制器中,点显示并编辑到相同的部分(show.html.erb)或类似的东西。