【问题标题】:Ruby on rails keep executing the previous elsif statementRuby on rails 继续执行前面的 elsif 语句
【发布时间】:2016-10-28 13:03:26
【问题描述】:

我对 ruby​​ 很陌生,有一个问题。我正在尝试使用两个搜索字段来实现搜索。第一个搜索字段将检查 elsif (2),第二个搜索字段将检查 elsif (3)。当我在第一个搜索字段中搜索时,如果找到搜索,它会显示我想要的内容。但是当我将第一个搜索字段留空并在第二个搜索字段中输入搜索时,它总是给我上一个搜索结果。我写了 if else 语句如下:

如果条件(1)

其他条件(2)

其他条件(3)

其他条件(4)

似乎只要 elsif(3) 为真一次,就永远不会达到 elsif 条件(4)。

这里是代码:

<h1> Search Results <h1>

<p><%= link_to 'Back', new_search_path %> </p>


<% if @search.find_users.empty? %>

<p> No Records Found </p>

<% elsif @search.find_jobs.empty? %>

<p> No Records Found1 </p>

<% elsif !@search.find_jobs.empty? %>
<% @search.find_jobs.each do |c| %>
    <%= c.title %>


    <% end %>
<% elsif !@search.find_users.empty? %>
<% @search.find_users.each do |c| %>
    <%= c.first_name %>

    <% end %>

<% end %>

非常感谢您的宝贵时间:)

【问题讨论】:

  • 你需要一个 Rails 标签。

标签: ruby-on-rails ruby


【解决方案1】:

条件 4 永远不会发生,因为如果条件 2 为假,则条件 3 自动为真,因为它们是完全相反的。

似乎只要 elsif(3) 为真一次,就永远不会达到 elsif 条件(4)。

这就是elsif 的工作原理——它的意思是“否则”。如果您希望显示 4 而不管 3 是什么,只需结束您的第一个 if 块并开始一个新块。

<h1> Search Results <h1>
<p><%= link_to 'Back', new_search_path %> </p>

<% if @search.find_users.empty? %>
  <p> No Records Found </p>
<% else %>
  <% @search.find_users.each do |c| %>
    <%= c.first_name %>
  <% end %>
<%end%>

<% if @search.find_jobs.empty? %>
  <p> No Records Found1 </p>
<% else %>
  <% @search.find_users.each do |c| %>
    <%= c.title %>
  <% end %>
<% end %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多