我的问题是我试图做一些
current_page?(controller: 'tigers', action:('index'||'new'||'edit'))
当控制器是tigers并且操作是index、new或edit时,返回true。上面的操作不会抛出错误,但只匹配第一个操作。救命!
tkqqtvp11#
比较冗长,但有效:
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()是生成空格分隔字符串数组的快捷方式
jexiocij2#
你也可以这样做:
if current_page?(root_path) || current_page?(about_path) || current_page?(contact_path) || current_page?(faq_path) || current_page?(privacy_path)
注意:不要在括号前留下空格,否则它将不起作用。
mwkjh3gx3#
使用current_page?方法的另一种方法是直接检查params散列:
params[:action] == ('index' || 'new' || 'edit')
如果是索引、新建或编辑,将返回true。您也可以通过params[:controller]访问控制器。
4nkexdtk4#
如果你想让所有的动作都与一个特定的控制器相关,你可以使用“controller_name”方法,如下所示
if controller_name == 'your_controller_name'
“controller_name”是从ActionController::基类继承的方法,默认情况下,它在所有视图和助手中都可用。
4条答案
按热度按时间tkqqtvp11#
比较冗长,但有效:
不那么冗长,也可以:
%w()是生成空格分隔字符串数组的快捷方式
jexiocij2#
你也可以这样做:
注意:不要在括号前留下空格,否则它将不起作用。
mwkjh3gx3#
使用current_page?方法的另一种方法是直接检查params散列:
如果是索引、新建或编辑,将返回true。您也可以通过params[:controller]访问控制器。
4nkexdtk4#
如果你想让所有的动作都与一个特定的控制器相关,你可以使用“controller_name”方法,如下所示
“controller_name”是从ActionController::基类继承的方法,默认情况下,它在所有视图和助手中都可用。