Я пытаюсь создать простой плагин Ruby on Rails. Когда функция redcarpetable вызывается с хешем для render_opts, я получаю «ArgumentError: unknown keyword: render_opts». Код функции:Ruby ArgumentError: неизвестное ключевое слово, но не знаю почему
def redcarpetable(*fields, renderer: :default, as: [nil], prefix: "rendered", render_opts: {})
fields.each do |field|
if fields.count > 1
define_method "#{prefix}_#{field}" do
Carpet::Rendering.render(read_attribute(field), renderer_opts: render_opts, rc_renderer: renderer).html_safe
end # End defining the method dynamically.
else
if as[0]
as.each do |method_name|
define_method "#{method_name}" do
Carpet::Rendering.render(read_attribute(field), render_opts: render_opts, rc_renderer: renderer).html_safe
end # End defining the method dynamically.
end
else
define_method "rendered_#{field}" do
Carpet::Rendering.render(read_attribute(field), render_opts: render_opts, rc_renderer: renderer).html_safe
end # End defining the method dynamically.
end
end
end # End the fields loop.
end # End the redcarpet method.
Как функция называется:
redcarpetable :name, renderer: :simple_parser, as: [:cool_name, :rendered_name], render_opts: {:generate_toc_data: true}
Для того, чтобы обеспечить хэш визуализации параметров, что должно быть сделано в объявлении функции? Полный код (еще не задокументированный или реорганизованный) составляет here.
Dunno, как вы получаете ошибку, которую вы получаете, но '{: generate_toc_data: true}' является синтаксической ошибкой (должно быть '{generate_toc_data: true}' или '{: generate_toc_data => true}') – Amadan