如何覆盖RefineryCMS管理区域“图像”选项卡的视图?

时间:2011-12-06 09:48:17

标签: ruby-on-rails ruby ruby-on-rails-3 refinerycms

是否有可能覆盖RefineryCMS的管理界面? 目前我正在开发基于RefineryCMS + Portfolio插件的在线投资组合。 我基本上想要显示添加图像标题和描述,这是遗憾的遗漏。 幸运的是,我发现了如何将这种功能破解到管理区域的说明,但我只是不知道如何覆盖“vendor / plugins”文件夹中的那些视图文件。

以下是我找到的说明的链接:

http://groups.google.com/group/refinery-cms/browse_thread/thread/929d7462cf075189?pli=1

我知道这个指南是为Rails 2和以前版本的RefineryCMS编写的,所以事情可能已经改变了,可能我必须完全不同地做。

提前致谢。

...我真的很想知道为什么他们仍然没有在插件中实现这些功能。

1 个答案:

答案 0 :(得分:2)

默认情况下,为什么这些没有添加到投资组合扩展中的答案是,投资组合背后的核心团队没有一个有用的案例。我们依靠补丁来改善或增加遇到这种需求的人的功能。那里的an open issue还没有人真正想出解决方案。

至于实施本身;要覆盖您想要覆盖的文件,您必须使用任务"捆绑exec rake refinery:override" (using this post as reference)像这样:

bundle exec rake refinery:override view=portfolio/_main_image
bundle exec rake refinery:override view=portfolio/show

这会将模板放在app / views / portfolio /中,以便您可以修改其内容。

您还必须将迁移语法从rails 2更改为rails 3,而不是" script / generate"它的轨道生成"。

因为图片扩展程序使用' attr_accessible'默认情况下,为了安全起见,您必须在config / application.rb中使用以下代码:

# Make the title and body fields added to Image accessible for mass assignment
config.to_prepare do
  Image.send :attr_accessible, :title
  Image.send :attr_accessible, :body
end

如果您想要澄清任何内容,或者我没有令人满意地回答您的问题,请告诉我。我会详细说明。

编辑:

如果要覆盖图像的后端视图,只需按照相同的过程,但对于后端视图:

bundle exec rake refinery:override view=admin/images/_form

现在只需添加相同格式的字段:

<div class='field'>
  <%= f.label :title %>
  <%= f.text_field :title %>
</div>
<div class='field'>
  <%= f.label :body %>
  <%= f.text_area :body, :class => 'wymeditor widest' %>
</div>

因为您已经添加了attr_accessible代码,所以会保存得很好。

如果这不是您想要的,请告诉我。

菲尔