问题标签 [draper]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Draper::UninferrableDecoratorError(无法推断装饰器)
我想在控制器中推断一个装饰器,所以我以正常方式生成一个装饰器(rails g 装饰器)并在控制器中推断它。但是,当我使用 Postman 进行测试时,出现错误:
Could not infer a decorator for Employers::Job
.
错误信息显示我在控制器中的语法不正确(在哪里.decorate
使用),我不知道我哪里出错了。
我尝试过更改书写方式并明确指定装饰器@job = Employers::JobDecorator.find(params[:id]).decorate
(
这是控制器的一部分:
这是一开始的装饰器:
更新 2
感谢评论中的建议,在我Employers::JobDecorator.decorate(@job)
在控制器中使用后情况发生了变化,但出现了一个新错误。消息说undefined method 'attributes' for nil:NilClass
,来源是以下文件中的一行代码:
#app/decorators/employer/job_decorator.rb
这是什么原因?
更新 3
按照评论的建议,在将一些装饰器更改为以下内容后,我又回到了之前的错误。
错误是“NoMethodError in Employers::JobController#show”,指向的文件是“config/initializer/active_model/serialization.rb”中的行之一(下面提取的最后一行):
更新 4
如果我更改装饰器的编写方式,结果仍然类似于“#Employers::JobDecorator:0x00007ff3cdd3f748 的未定义方法‘id’”
更新 5
我怀疑原因是@job为nil,所以我在控制器中添加了一些东西,终于解决了问题。我把它弄错了方向。