[英]Ruby On Rails - HTML Conditional Based On Controller and Action
我正在嘗試解決語法問題。 我只是在嘗試檢查是否加載了控制器/動作,如果這樣做,則執行某些操作,如果未執行其他操作,則看起來很簡單。 這給我一個錯誤:
<% if (:controller => 'home', :action => 'index') do %>
<div class="header">
<% else %>
<div class="header-2">
<% end %>
有人可以在這里幫助我解決語法問題嗎? 謝謝!
您必須像這樣修改if子句:
<% if controller_name == 'home' && action_name == 'index' %>
此外,如果必須多次調用此函數,建議您定義一個幫助器。
application_helper.rb
def home_index?
controller_name == 'home' && action_name == 'index'
end
這樣,您的代碼將更具可讀性:
some_view.html.erb
<div class='<%= home_index? ? "foo" : "bar" %>'>
您可以使用Rails提供的幫助程序來檢查那些事情(當前控制器/操作,參數等): current_page?
<% if current_page?(controller: 'home', action: 'index') %>
<div class="header">
<% else %>
<div class="header-2">
<% end %>
文檔: http : //api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-current_page-3F
使用此幫助程序,您還可以檢查特定的參數:
current_page?(controller: 'home', action: 'index', page: '2')
在視圖中,您需要檢查controller_name
和action_name
。 嘗試這個
<% if controller_name == 'home' && action_name == 'index' %>
<div class="header">
<% else %>
<div class="header-2">
<% end %>
在您的視圖中嘗試一下,它將起作用
<% if (controller_name == 'applications' && action_name == 'index') %>
<div class="header">
<%else%>
<div class="header-2">
<%end%>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.