作为管理员,我可以创建一个页面,只要它有一个标题。如果我不填写标题字段,我会在下面收到未捕获的异常。我希望管理员用户在屏幕上收到一条错误消息,提示他填写标题字段,而不是应用程序崩溃。
错误
NoMethodError in Refinery/admin/pages#create
Showing .bundler/ruby/2.0.0/refinerycms-a03fcf214281/pages/app/views/refinery/admin/pages/_form_advanced_options.html.erb where line #39 raised:
undefined method `map' for nil:NilClass
Extracted source (around line #39):
36: <%= f.label :view_template, t('.view_template') %>
37: <%= refinery_help_tag t('.view_template_help') %>
38: </span>
39: <%= f.select :view_template, @valid_view_templates.map { |t| [t.titleize, t] },
40: template_options(:view_template, @page) %>
41: </div>
42: <% end %>
如何避免此错误?
混淆了我的谷歌搜索,并在炼油厂谷歌组中找到了答案:
https://groups.google.com/forum/#!msg/refinery-cms/0FfuehWwLgA/kuCgLVlf-nsJ
要解决此问题,请执行以下操作:
1. 在路径处为管理页面控制器添加装饰器文件:
app/decorators/controllers/refinery/admin/pages_controller_decorator.rb
2. 复制粘贴以下代码:
Refinery::Admin::PagesController.class_eval do
# Solves error when creating pages without title
# See: http://stackoverflow.com/q/19013244/1093087
before_filter :load_valid_templates, :only => [:create, :update, :edit, :new]
end
我现在收到一条错误消息,说我需要按预期填写标题。
感谢上面 groups.google.com 链接中的pascal huynh快速修复。