Я думаю, что вы не должны использовать точно такой же частичный для продуктов и заказов.
Возможно, вы захотите использовать макет:
views / layouts / description.html.erb
<div class="description">
<%= model.description %>
<!-- other common code... -->
<div class="actions">
<%= yield %>
</div>
</div>
views / orders / description.html.erb
<%= render :layout => "layouts/description", :locals => { :model => @order } do %>
<%= if (can? :update, @order) %>
your link
<% end %>
<%= end %>
Вам не нужно этого делать, но я думаю, что это чище, чем иметь дело с несколькими моделями в одной и той же части.
примечание:
but if can? :update, @orders return true or false, it show or hides edit button depending on that condition only
Я действительно не понимаю этого.Если @orders были нулевыми, то можете?вернет false, и результат всего выражения будет результатом (can? :update, @product)
, который, я думал, был тем, что вы хотели.