我有一个语法问题,我正在尝试理清。我只是想检查一个控制器/动作是否被加载,如果是这样,做一些事情,如果不做其他事情,似乎很简单。这给了我一个错误:
<% if (:controller => 'home', :action => 'index') do %>
<div class="header">
<% else %>
<div class="header-2">
<% end %>
有人可以帮我解决语法问题吗?谢谢!
答案 0 :(得分:5)
您必须像这样修改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" %>'>
答案 1 :(得分:3)
您可以使用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')
答案 2 :(得分:1)
在视图中,您需要检查controller_name
和action_name
。试试这个
<% if controller_name == 'home' && action_name == 'index' %>
<div class="header">
<% else %>
<div class="header-2">
<% end %>
答案 3 :(得分:0)
在您的视图中尝试此操作,它将起作用
<% if (controller_name == 'applications' && action_name == 'index') %>
<div class="header">
<%else%>
<div class="header-2">
<%end%>