隐藏导轨

时间:2015-12-03 12:54:20

标签: ruby-on-rails

我有一个导航栏和一个搜索字段。我不想在我的主页和搜索页面上显示搜索字段。我尝试下面的代码,但它没有工作...但如果我在下面的代码中只尝试一个像<% if params[:action] != 'home' %>那么它的工作。视图中是否允许使用或符号?有人能告诉我这里我做错了什么吗?

<% if params[:action] != 'search' || 'home' %>
  <%= form_tag search_path, class: "navbar-form navbar-left", method: :get do %>
    <div class="form-group">
      <%= text_field_tag :search, params[:search], placeholder: "Search your product?", class: "form-control" %>
    </div>
  <% end %>
<% end %>

3 个答案:

答案 0 :(得分:3)

<% if (params[:action] != 'search') && (params[:action] != 'home') %>
  <%= form_tag search_path, class: "navbar-form navbar-left", method: :get do %>
    <div class="form-group">
      <%= text_field_tag :search, params[:search], placeholder: "Search your product?", class: "form-control" %>
    </div>
  <% end %>
<% end %>

这应该有效。在你的代码'home'中,总是评估为true。

答案 1 :(得分:2)

<% if params[:action] != 'search' || 'home' %>

这将始终将params [:action]与search进行比较。

由于'search' || 'home'将始终返回search

'search' || 'home'此表达式表示如果第一个参数为 false ,则返回2参数。

false || 'home'此表达式将返回home,因为第一个参数为 false

试试这个: 将来您可以在数组中添加更多操作:

<% unless ["search", "home"].include?(params[:action]) %>
  <%= form_tag search_path, class: "navbar-form navbar-left", method: :get do %>
    <div class="form-group">
      <%= text_field_tag :search, params[:search], placeholder: "Search your product?", class: "form-control" %>
    </div>
  <% end %>
<% end %>

答案 2 :(得分:1)

您只是将搜索操作与代码进行比较,将代码更改为

<% if params[:action] != 'search' || params[:action] != 'home' %>
  <%= form_tag search_path, class: "navbar-form navbar-left", method: :get do %>
    <div class="form-group">
      <%= text_field_tag :search, params[:search], placeholder: "Search your product?", class: "form-control" %>
    </div>
  <% end %>
<% end %>