Ruby on rails继续执行前面的elsif语句

时间:2016-10-28 00:54:21

标签: ruby-on-rails ruby

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

如果条件(1)

elsif condtion(2)

elsif condtion(3)

elsif condtion(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 %>

非常感谢您的时间:)

1 个答案:

答案 0 :(得分:2)

条件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 %>