Ruby on rails 在erb文件中使用if语句

Ruby on rails 在erb文件中使用if语句,ruby-on-rails,if-statement,erb,Ruby On Rails,If Statement,Erb,我是RubyonRails新手,正在做一个构建论坛的示例项目。我尝试设置一个可以删除其他管理员的超级管理员。但始终无法通过规范 这是我的密码 views/user/_user.html.erb <li> <%= gravatar_for user, size: 52 %> <%= link_to user.name, user %> <% if (current_user.admin? && !current_user?(user) &a

我是RubyonRails新手,正在做一个构建论坛的示例项目。我尝试设置一个可以删除其他管理员的超级管理员。但始终无法通过规范

这是我的密码 views/user/_user.html.erb

<li>
<%= gravatar_for user, size: 52 %>
<%= link_to user.name, user %>
<% if (current_user.admin? && !current_user?(user) && !user.admin?) ||  current_user.sadmin? %>
| <%= link_to "delete", user, method: :delete,
                data: { confirm: "You sure?" } %>
<% end %>
</li>
当我尝试运行规范时,错误是

 1) User pages index delete links as an sadmin user
     Failure/Error: it { should_not have_link('delete', href: user_path(sadmin)) }
       expected #has_link?("delete", {:href=>"/users/422"}) to return false, got true
     # ./spec/requests/user_pages_spec.rb:66:in `block (5 levels) in <top (required)>'

  2) User pages index delete links as an sadmin user
     Failure/Error: it { should have_link('delete', href: user_path(admin))}
       expected #has_link?("delete", {:href=>"/users/423"}) to return true, got false
   # ./spec/requests/user_pages_spec.rb:65:in `block (5 levels) in <top (required)>'
1)用户页面索引作为sadmin用户删除链接
失败/错误:它{应该没有链接('delete',href:user\u path(sadmin))}
期望#has_link?(“delete”,{:href=>“/users/422”})返回false,得到true
#./spec/requests/user\u pages\u spec.rb:66:in'block(5级)in'
2) 用户页面作为sadmin用户索引删除链接
失败/错误:它{应该有_链接('delete',href:user_path(admin))}
期望#has_link?(“delete”,{:href=>“/users/423”})返回true,但得到false
#./spec/requests/user\u pages\u spec.rb:65:in'block(5级)in'
我不确定这是否意味着我在erb文件中使用的语法是错误的,或者是我搞砸了其他一些事情?提前感谢

    <% if (current_user.admin? && !current_user?(user) && !user.admin?) ||  current_user.sadmin? %>
        | <%= link_to "delete", user, method: :delete,
                data: { confirm: "You sure?" } %>
    <% end %>
我想

it { should have_link('delete', href: user_path(admin))}
失败,是因为管理员用户已在中删除

it "should be able to delete another user" do
      expect do
        click_link('delete', match: :first)
      end.to change(User, :count).by(-1)
    end

部分?

不,语法很好<代码>失败表示未达到测试中的预期,而不是代码未能执行。在
sadmin
用户上调用
admin?
时会发生什么?是
真的
还是
假的
?嗨,谢谢你的回复,我已经修复了那个bug,其他文件有问题。。。还是谢谢你!
it { should have_link('delete', href: user_path(admin))}
it "should be able to delete another user" do
      expect do
        click_link('delete', match: :first)
      end.to change(User, :count).by(-1)
    end