这是我想在我的观点中访问的方法:
def current_user?(user)
user == current_user
end
我基本上需要检查当前用户是否在视图中不能与朋友交朋友。
<% unless current_user?(@user) %>
<% if current_user.friendly?(@user)
<%= render 'unfriend' %>
<% else %>
<%= render 'friend' %>
<% end %>
<% end %>
Devise已经提供了current_user帮助方法。 如何以及在何处在Rails项目中添加此方法?
感谢您的帮助
答案 0 :(得分:5)
在设计视图中使用应用程序帮助程序方法。 将class_eval代码放在Devise初始化程序的底部,就在Devise.setup块之后。
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
答案 1 :(得分: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) %>
答案 2 :(得分:1)
我最初在application_helper.rb文件中犯了一个错误。
我使用了实例变量current_user?(@user)
而不是局部变量current_user?(user)
。
如果我没有使用Devise,我会将helper方法放在会话助手中。所以我认为它可以在appication助手中起作用,但不是正面的。
感谢@JesseWolgamott