在Refinery CMS中,为什么创建没有标题的页面会导致未捕获的异常?

时间:2013-09-25 19:10:03

标签: ruby-on-rails refinerycms

作为管理员,我可以创建一个页面,只要它有一个标题。如果我没有填写标题字段,我会得到下面未捕获的例外情况。而不是应用程序崩溃,我希望管理员用户在屏幕上收到一条错误消息,提示他填写标题字段。

错误

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 %>

如何避免此错误?

1 个答案:

答案 0 :(得分:1)

稍微混淆了我的Google搜索,并在炼油厂Google小组中找到答案:

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

我现在收到一条错误消息,说我需要按预期填写标题。

感谢pascal huynh在上面的groups.google.com链接中进行快速修复。