我怎样才能获得current_page?匹配多个动作?

时间:2014-02-01 00:54:04

标签: ruby-on-rails haml

我的问题是我尝试做类似

的事情
current_page?(controller: 'tigers', action:('index'||'new'||'edit'))

当控制器是老虎并且操作是索引,新建或编辑时返回true。

上述内容不会引发错误,只会与第一个操作匹配。

帮助!

3 个答案:

答案 0 :(得分:15)

更详细,但有效:

current_page?(controller:'bikes') &&
 (current_page?(action:'index') ||
  current_page?(action:'new')   ||
  current_page?(action:'edit'))

不那么冗长,也有效:

params[:controller] == 'bikes' && %w(index new edit).include?(params[:action])

%w()是构建空格分隔字符串数组的快捷方式

答案 1 :(得分:4)

使用current_page的替代方法?方法是直接检查params哈希:

params[:action] == ('index' || 'new' || 'edit')

如果在索引,新建或编辑时返回true。您也可以通过params [:controller]访问控制器。

答案 2 :(得分:3)

您也可以这样做:

if current_page?(root_path) || current_page?(about_path) || current_page?(contact_path) || current_page?(faq_path) || current_page?(privacy_path)

注意:请勿在括号前留空格,否则无法使用。