簡體   English   中英

Ruby On Rails-基於控制器和操作的HTML條件

[英]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_nameaction_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM