针对当前URL的ROR if语句

时间:2012-08-27 12:33:15

标签: ruby-on-rails if-statement ruby-on-rails-3.2

我确信这很简单,所以对这个天真的问题道歉。

我正在尝试测试当前页面是否为'jobs#index'。如果它是我有一些额外的CSS和内容,我将包括在页面中,如果没有,那么我希望它加载页面没有这个额外的内容。

我认为它应该是这些方面的东西,但我似乎无法做到正确。

 <% if path == 'jobs#index' %>
  <div class="slidingDiv">
    Fill this space with really interesting content. 
  </div>
  <div class="show_hide">
    FILTERS
  </div>
 <% else %>
 <% end %>

任何建议真的非常感谢!

3 个答案:

答案 0 :(得分:6)

<% if params[:action] == "index" && params[:controller] == "jobs" %>

我会把它放在一个帮助方法中。

答案 1 :(得分:5)

rails中有内置的current_page?方法。

if current_page?(:controller => 'jobs', :action => 'index')

此外,你可以这样做:

if controller_name == 'jobs' && action_name == 'index'

顺便说一下,您可以在上面的示例代码中删除<% else %>

答案 2 :(得分:2)

我会创建一个如下所示的辅助方法。您可以通过这种方式传递更多路径。

在视图中

<% if is_path?("/hello/world", root_path) %>

in helper

def is_path?(*paths)
  paths.include?(request.path)
end

注意:尝试为路径使用命名助手

  

jobs #index等于jobs_path