首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails基于控制器和动作的HTML条件

Rails基于控制器和动作的HTML条件
EN

Stack Overflow用户
提问于 2015-03-18 11:50:47
回答 4查看 1.7K关注 0票数 2

我想解决一个语法问题。我只是试着检查是否加载了控制器/操作,如果是的话,做一些事情,如果不做其他的事情,看起来很简单。这给了我一个错误:

代码语言:javascript
复制
<% if (:controller => 'home', :action => 'index') do %>
    <div class="header">
<% else %>
    <div class="header-2">
<% end %>  

有人能帮我解决这里的语法问题吗?谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-03-18 11:55:43

您必须修改if子句如下:

代码语言:javascript
复制
<% if controller_name == 'home' && action_name == 'index' %>

此外,如果必须不止一次调用这一点,我建议您定义一个助手。

application_helper.rb

代码语言:javascript
复制
def home_index?
  controller_name == 'home' && action_name == 'index'
end

这样,代码的可读性就会大大提高:

some_view.html.erb

代码语言:javascript
复制
<div class='<%= home_index? ? "foo" : "bar" %>'>
票数 7
EN

Stack Overflow用户

发布于 2015-03-18 11:56:25

您可以使用Rails提供的助手来检查这类事情(当前控制器/动作、参数、.):current_page?

代码语言:javascript
复制
<% if current_page?(controller: 'home', action: 'index') %>
  <div class="header">
<% else %>
  <div class="header-2">
<% end %> 

文档:page-3F

使用此助手,您还可以检查特定的参数:

代码语言:javascript
复制
 current_page?(controller: 'home', action: 'index', page: '2')
票数 3
EN

Stack Overflow用户

发布于 2015-03-18 11:55:30

在视图中,您需要检查controller_nameaction_name。尝尝这个

代码语言:javascript
复制
<% if controller_name == 'home' && action_name == 'index' %>
    <div class="header">
<% else %>
    <div class="header-2">
<% end %> 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29121292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档