gpt4 book ai didi

ruby-on-rails - 混合使用 ERB 和 Rails 路径助手编译 YAML

转载 作者:数据小太阳 更新时间:2023-10-29 08:08:47 25 4
gpt4 key购买 nike

我正在我的应用程序中开发一个导航助手,它从 YAML 文件编译当前命名空间/ Controller 的页面导航。我的 YAML 是这样的:

---
manage:
- link: <%= manage_clients_path %>
icon: torsos-all
label: Clients
- link: <%= manage_users_path %>
icon: torso
label: Users

在我的助手中,我经历了几次迭代,但现在我使用的是这段代码:

require 'yaml'
require 'erb'
module NavigationHelper
include Rails.application.routes.url_helpers

def navigation
unless current_user.nil?
namepsace = params[:controller].split('/').first
compiledNav = ERB.new File.read(File.join Rails.root, 'config/navigation.yml')
nav = YAML.load compiledNav.result
if nav.has_key?(namepsace) && !nav[namespace].blank?
nav[namepsace]
else
[]
end
end
end
end

现在,我收到一个错误,指出 manage_clients_path 未定义(undefined local variable or method manage_clients_path' for main:Object ), but I can guarentee that it does exist by running rake routes`。

来自 rake routes

$ ./bin/spring rake routes | grep manage_clients
manage_clients GET /manage/clients(.:format) manage/clients#index

最佳答案

问题似乎是由我使用 HAML 构建 View 和布局引起的。我将代码更改为以下内容,一切正常:

YAML 配置:

---
manage:
- link: #{manage_clients_path}
icon: torsos-all
label: Clients
- link: #{manage_users_path}
icon: torso
label: Users

还有我的 helper :

require 'yaml'

module NavigationHelper
def navigation
unless current_user.nil?
namepsace = params[:controller].split('/').first
nav = YAML.load_file File.join(Rails.root, 'config/navigation.yml')
if nav.has_key?(namepsace) && !nav[namespace].blank?
nav[namepsace]
else
[]
end
end
end
end

现在一切正常。

关于ruby-on-rails - 混合使用 ERB 和 Rails 路径助手编译 YAML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23914235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com