为什么开拓者中会出现"符号到哈希的无隐式转换"错误



我遇到了一个一周都无法独自解决的问题——我绝望了。

我有一个Rails 5.2项目,上面有一个开拓者。在应用程序的一个地方,我发现了这个错误:

TypeError - no implicit conversion of Symbol into Hash:
app/concepts/post/admin/views/_authors_tab.slim:10:in `block (2 levels) in singleton class'
app/concepts/post/admin/views/_authors_tab.slim:9:in `block in singleton class'
app/concepts/post/admin/views/_authors_tab.slim:65534:in `singleton class'
app/concepts/post/admin/views/_authors_tab.slim:65531:in `__tilt_70096639860360'
app/concepts/post/admin/views/show.slim:14:in `block in singleton class'
app/concepts/post/admin/views/show.slim:65534:in `singleton class'
app/concepts/post/admin/views/show.slim:65531:in `__tilt_70096639860360'
app/concepts/post/admin/cell.rb:13:in `show'
app/views/admin/posts/show.slim:3:in `_app_views_admin_posts_show_slim__1322321696587881215_70096664842560'
app/controllers/application_controller.rb:71:in `apply_time_zone'
Started POST "/__better_errors/51d28299c14c669d/variables" for ::1 at 2018-10-22 15:00:18 +0300

_authors_tab.sliml:10(9行和10行(:

- authors.each do |author|
= concept 'post/author/list_item/cell', author, context: :admin

以下是我为获得最佳演示而专门剪切的代码(当然,错误被保留了下来(:

class Post::Author::ListItem::Cell < RBlog::Cell
option_property :context, nil_check: true
def show
render
end
end

这是一个文件(app/contensions/r_blog/cell/option_property.rb(,其中描述了一种未知方法:

module RBlor::Cell::OptionProperty
def option_property(name, nil_check: false)
if nil_check
define_method(name) do
raise "Option #{name} cannot be blank" if @options[name].nil?
@options[name]
end
else
define_method(name) { @options[name] }
end
private name
end
end

至于上面代码中的文件show.slim——我对它的所有内容进行了评论,删除了它,甚至保持了原样(使用了Post :: Author :: ListItem :: Cell中描述的方法,但正如我在上面所写的,这些方法被删除了(——这个文件不会影响任何事。显然,错误在处理之前就出现了。

可能有什么问题

我不确定你在单元格中的第一行要做什么

option_property->如果我没记错的话,这不是Cells项目中任何地方的定义方法调用。

p.S.:我建议去Gitter频道进行TRB项目,你会比其他地方更快地得到回应。

问题是context: :i_am_a_symbol,该选项需要哈希而不是符号!

最新更新