Ruby On Rails - 基于控制器和动作的HTML条件

Bra*_*adM 1 ruby-on-rails ruby-on-rails-4

我有一个语法问题,我正在尝试解决.我只是想检查一个控制器/动作是否被加载,如果是这样,做一些事情,如果不做其他事情,似乎很简单.这给了我一个错误:

<% if (:controller => 'home', :action => 'index') do %>
    <div class="header">
<% else %>
    <div class="header-2">
<% end %>  
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决语法问题吗?谢谢!

dav*_*son 5

您必须像这样修改if子句:

<% if controller_name == 'home' && action_name == 'index' %>
Run Code Online (Sandbox Code Playgroud)

另外,如果不得不多次调用,我建议您定义一个帮助器.

application_helper.rb

def home_index?
  controller_name == 'home' && action_name == 'index'
end
Run Code Online (Sandbox Code Playgroud)

这样你的代码就会更具可读性:

some_view.html.erb

<div class='<%= home_index? ? "foo" : "bar" %>'>
Run Code Online (Sandbox Code Playgroud)