在第 1 页中,我使用代码 A+B+C
在第 2 页中,我使用代码 B+C
因此,当我制作部分内容时,我真的不知道如何处理这个问题。
例如,在评论后系统中。我想在 2 个不同的页面中显示 @comments。在评论索引页面中,我们显示它所属的帖子。而在post show页面,我们只需要展示comments的内容。(因为不需要再展示comment.post)
#Comment Index Page
<% @comments.each do |comment| %>
<%= comment.post %>
<%= comment.author %>
<%= comment.content %>
<% end %>
..
#Post Show Page
<% @comments.each do |comment| %>
<%= comment.author %>
<%= comment.content %>
<% end %>
那么,如何使部分代码重用呢?也许像这样?但这有更优雅的方法吗?
#Comment Index Page
<% @comments.each do |comment| %>
<%= comment.post %>
<%= render comment %>
<% end %>
#Post Show Page
<% @comments.each do |comment| %>
<%= render comment %>
<% 结束 %>
更新:我采用局部变量方法,并更新我的代码,如:
# partial
<% if include_topic %>
<div class="Topic">
<h5><%= link_to "#{comment.topic.content}", comment.topic %></h5>
</div>
<% end %>
#Index
<%= render @comments, :locals => {:include_topic => true } %>
但是我得到未定义的局部变量或方法 `include_topic' for #<# 我只是找不到调试这个问题的地方