我有一个导航栏和一个搜索字段。我不想在我的主页和搜索页面上显示搜索字段。我尝试下面的代码,但它没有工作...但如果我在下面的代码中只尝试一个像<% 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 %>
答案 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 %>