喜欢干掉以下代码。创建了部分_user.html.erb
,由用户视图通过
<%= render @users %>
和群组视图
<%= render partial: 'users/user', collection: @mailgroup.users, as: :user %>
部分_user.html.erb
是:
<%= content_tag_for(:tr, user) do %>
<td><%= user.id %></td>
<td><%= check_box_tag "user_ids[]", user.id, true %></td>
<td><%= user.firstname %></td>
<td><%= user.lastname %></td>
<td><%= user.function %></td>
<td><%= user.company %></td>
<td><%= user.appendix %></td>
<td><%= user.city %></td>
<td>
<%= link_to button1 ... %>
<%= link_to button2 ... %>
<%= link_to button3 ... %>
<%= link_to button4 ... %>
</td>
<% end %>
现在我喜欢这个部分已经为所有列(调用1)渲染一次,并且还有一个列的子集(调用2.)。特别喜欢隐藏第二列中的check_box_tag
。
我四处搜索,最后如何解决困惑:不同的布局?我怎么能用偏见来做呢?或者首先检查呼叫来自哪个控制器? (这对我来说听起来不太令人满意。)
一般情况下:如何使用不同的列子集调用相同的部分而不维护该部分的不同副本?
答案 0 :(得分:1)
我不确定你可以使用部分布局,我同意检查控制器源是代码味道。我会考虑使用另一个本地来检查是否要显示可以在“调用”视图中设置的字段,例如。
<%= render @users, locals: {show_buttons: false} %>
<%= render partial: 'users/user', collection: @mailgroup.users, as: :user, show_buttons: true %>
并在用户部分
中使用<% if show_buttons %>
<td><%= check_box_tag "user_ids[]", user.id, true %></td>
<% end %>
你可以用辅助方法进一步干掉它
<td><%= user.id %></td>
<%= check_box(user, show_buttons)
module UsersHelper
def check_box(user, show_buttons)
if show_buttons
content_tag(:td) do
content_tag(:option, "user_ids[]", value: user.id )
end
end
end
end