2

这是我想在我的视图中访问的方法:

def current_user?(user)
  user == current_user
end

我基本上需要检查当前用户不能在视图中加好友和取消加好友。

<% unless current_user?(@user) %>
  <% if current_user.friendly?(@user)
    <%= render 'unfriend' %>
  <% else %>
    <%= render 'friend' %>
  <% end %>
<% end %>

Current_user 辅助方法已由 Devise 提供。在我的 Rails 项目中如何以及在何处添加此方法?

谢谢你的帮助

4

3 回答 3

7

在设计视图中使用应用程序助手方法。将您的 class_eval 代码放在 Devise 初始化程序的底部,就在 Devise.setup 块之后。

配置/初始化程序/devise.rb

Devise.setup do |config|
  # ... existing Devise configuration, no modification necessary to include helper(s) ...
end

编辑:

Devise::Mailer.class_eval do
  helper :application # include "ApplicationHelper", adjust to suit your needs
end
于 2014-01-06T11:46:25.757 回答
1

在我看来,您可以像这样简单地在视图上添加比较:

<% if current_user != @user %>
  <% if current_user.friendly?(@user)
    <%= render 'unfriend' %>
  <% else %>
    <%= render 'friend' %>
  <% end %>
<% end %>

无论如何,如果您仍然想使用该方法,您可以在 User.rb 中创建一个方法

def equal_user?(another_user)
  another_user == self
end

并且在视图中

<% if @user.equal_user?(current_user) %>
于 2013-05-01T22:09:28.147 回答
1

我最初在 application_helper.rb 文件中犯了一个错误。

我使用实例变量current_user?(@user)而不是局部变量current_user?(user)

如果我不使用 Devise,我会将辅助方法放在会话助手中。所以我认为它可以在应用程序助手中工作,但不是积极的。

谢谢@JesseWolgamott

于 2013-05-01T22:43:00.820 回答