Refinerycms - 将图像字段添加到博客引擎

Ada*_*dam 8 model ruby-on-rails refinerycms

我有一个refinerycms应用程序,其上安装了社区博客引擎.我想在blog_post中添加一个图像字段,以便我可以为帖子选择一个主图像,并将其显示在我的视图中.

我试过添加一个图像字段,没有快乐.然后我查看了一个带有图像字段的其他自定义引擎,并使用image_id链接到主图像表,所以我尝试添加一个image_id字段,并编辑blog_post模型以具有相同的'belongs_to'行.编辑博客加载的页面,图像选择器部分工作,但当我点击保存时,看起来没有任何东西被发送到我的表.

我担心的一件事是当我使用图像字段创建自定义引擎时,我将其指定为字段类型图像.这似乎在后端创建了image_id字段,并设置了所有内容,因此我仍然可以引用图像类.向博客添加图像字段并没有这样做,只是创建了一个名为image的字段类型.在检查我的自定义引擎的表时,没有名为image的字段类型,所以某处有一些我无法重新创建的转换魔法.

目前我有以下代码:

创建此迁移:

class AddPictureToBlog < ActiveRecord::Migration
 def self.up
   add_column :blog_posts, :main_image_id, :integer
 end

 def self.down
   remove_column :blog_posts, :main_image_id
 end
end
Run Code Online (Sandbox Code Playgroud)

将此添加到blog_post模型中:

  belongs_to :main_image_id, :class_name => 'Image'
Run Code Online (Sandbox Code Playgroud)

并在视图上有这个:

    <%= f.label :main_image_id -%>
<%= render :partial => "/shared/admin/image_picker", :locals => {
      :f => f,
      :field => :main_image_id,
      :image => @blog_post.main_image_id,
      :toggle_image_display => false
    } %>
Run Code Online (Sandbox Code Playgroud)

自定义引擎甚至没有引用_id字段,所以我不知道这里缺少哪些链接.任何帮助将不胜感激.它可能根本不是一个refinerycms特定的问题 - 我是rails的新手,所以这里可能缺少一些基础知识.

谢谢!

Ari*_*n L 14

对于rails 3.2.3和refinerycms 2.0.0,bleow代码有效,

创建新迁移:

rails generate migration add_image_id_to_refinery_blog_posts image_id:integer
rake db:migrate
Run Code Online (Sandbox Code Playgroud)

在"decorators/refinery/blog /"下创建一个文件post_decorator.rb

添加以下行,

Refinery::Blog::Post.class_eval do
  # Whitelist the :image_id parameter for form submission
  attr_accessible :image_id
  belongs_to :image 
end
Run Code Online (Sandbox Code Playgroud)

生成炼油厂表单文件:

rake refinery:override view=refinery/blog/admin/posts/_form
Run Code Online (Sandbox Code Playgroud)

并在"views/refinery/blog/admin/posts/_form.html.erb"中添加以下代码

<div class="field">
  <%= f.label :image_id %>
  <%= render :partial => "/refinery/admin/image_picker", :locals => {
    :f => f,
    :field => :image_id,
    :image => f.object.image,
    :toggle_image_display => false
  }
  %>
</div>
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅链接扩展模型


Chr*_*rds 7

这是我最终做到的方式(但是我已经提出了一个功能请求;)):

创建新迁移:

rails generate migration add_image_id_to_blog_posts image_id:integer
rake db:migrate
Run Code Online (Sandbox Code Playgroud)

将其添加到blog_post.rb模型中:

attr_accessible :image_id
belongs_to :image
Run Code Online (Sandbox Code Playgroud)

修改博客管理表单视图以包含以下内容:

<div class='field'>
  <%= f.label :image -%>
  <%= render :partial => "/shared/admin/image_picker", :locals => {
        :f => f,
        :field => :image_id,
        :image => f.object.image,
        :toggle_image_display => false
      } %>
</div>
Run Code Online (Sandbox Code Playgroud)

你应该好好去吧!:)