Rails重构视图

时间:2017-03-09 19:44:53

标签: ruby-on-rails view

我有以下观点

<div class='post-helpers'>
  <% if current_user.id == @post.user_id %>
    <%= button_to 'Edit', edit_post_path(@post), class: 'btn', tabindex: 1 %>
    <%= button_to 'Delete', @post, class: 'btn', tabindex: 2, method: :delete %>
  <% end %>
</div>

current_user.id == @something.user_id正在很多地方使用,因此我试图在application_helper中将其移出。 怎么办呢?

PS:此帮助程序需要可重用,不应仅依赖于@post

1 个答案:

答案 0 :(得分:0)

current_user

您可以使其更加通用,并允许def owner?(object, user = nil) user ||= current_user user && user.id == object.user_id end 的检查规则,但对于任何用户:

<div class='post-helpers'>
  <% if owner?(@post) %>
    <%= button_to 'Edit', edit_post_path(@post), class: 'btn', tabindex: 1 %>
    <%= button_to 'Delete', @post, class: 'btn', tabindex: 2, method: :delete %>
  <% end %>
</div>

用法

{{1}}