Rails除非有2个条件,第二个条件不能使用slim

时间:2013-10-07 02:28:49

标签: ruby-on-rails if-statement conditional slim-lang

这是我的代码:

- unless Relationship.are_friends?(current_user, @user) && (current_user != @user)
  - puts "d"*100
  - puts "#{current_user.inspect}"
  - puts "#{@user.inspect}"
  = link_to "Add Friend", controller: "relationships", action: "req", name: @user.name,      remote: true, class: "friend_link"

基本上第二个条件“current_user!= @user”不起作用,我不知道为什么。当我放置当前用户和@user时,它们正常工作。 @user = User.find_by_name(params [:name])。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

我认为这是你的要求。允许A在以下情况下将B添加为朋友:

  • A和B不是朋友和
  • A和B不是同一个人

所以,在伪代码中, 除非(already_friends或same_person)   allow_add_friend 端

如果这是您的要求,您的陈述应为:

unless Relationship.are_friends?(current_user, @user) or (current_user == @user)

请注意,&&已更改为or!=已更改为==

答案 1 :(得分:1)

unless通常有点违反直觉,特别是在多个条件下。以这种方式看待它:

true && false # => false, code is executed
false && true # => false, code is executed

跳过块的唯一条件是:

true && true  # => true, code is not executed

我想你要做的是跳过块是条件为真,在这种情况下你需要使用||运算符:

unless Relationship.are_friends?(current_user, @user) || (current_user == @user)
  #etc..