我有一个装饰器,通过控制器和动作改变行为,如下所示:
class ShortPositionDecorator < ApplicationDecorator
delegate_all
def company_short_name
return if h.current_page?(action: 'positions', controller: 'users')
object.company.short_name
end
end
这是它的路线。
get 'positions', to: 'users#positions'
但是当我使用路径作为根路径时,
root 'users#positions'
我必须为根路径添加一个条件。
def company_short_name
return if h.current_page?(action: 'positions', controller: 'users')
+ return if h.current_page?('/')
object.company.short_name
end
是否有办法通过操作和控制器更改视图,即使路径为/
?
如果我使用current_page?('/')
,我必须更改几个位置才能更改根路径。我想避免那种混乱。
答案 0 :(得分:0)
您可以使用controller_name
and action_name
获取当前控制器/操作并创建自定义帮助程序:
def current_controller_action?(controller:,action:)
controller == controller_name && action == action_name
end
并使用它代替current_page?
...快速查看the source for current_page?
会显示它调用url_for
并传递您传递给它的内容,因此路径文件中有多个路由指向相同的控制器/动作不能很好地适应它。