我的应用管理ProjElements
,其子类化为:
Milestone
Task
Decision
对于给定的ProjElement
show.html.erb
,您可以对该项目元素实例发表评论(例如,您可以在Milestone XYZ
或Decision ABC
上添加评论)。像这样:
// display project element specific stuff
// - e.g. show.html.erb for Milestone has milestone-specific stuff
// - e.g. show.html.erb for Decision has decision-specific stuff
// provide comment functionality
// - e.g. for Milestone's show.html.erb, code looks like
<%= form_for [@milestone, Comment.new] do |f| %>
<% if @milestone.comments.size > 0 %>
...
<% end %>
<% f.submit %>
<% end %>
我计划对注释代码使用partial,并根据DRY在不同项目元素的各种show.html.erb
视图中使用它。但是......
如何编写部分Rails方式的通用代码,以便局部可以处理不同的项目元素?
答案 0 :(得分:2)
您可以通过locals哈希传递元素的子类实例。在app / views / milestones / show.html.erb
中render :partial => 'shared/comments', :locals => { :element => @milestone }
在app / views / shared / _comments.html.erb
中<% form_for [element, Comment.new] do |f| %>