生成的RefineryCms引擎生成错误的资源类型

时间:2014-04-02 11:05:36

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

我是RefineryCMS和Rails的初学者。我制作了我的RefineryCMS应用程序,并且我正在尝试生成我的引擎,如指南中所述。 我正在运行这个命令:

rails g refinery:engine article title:string reference:string file:resource

在我进入管理部分的视图中,没有按钮可以浏览文件资源或任何预期的文件资源,只需一个框来引入文本。这是部分形式的一部分:

  <div class='field'>
    <%= f.label :file_id -%>
    <%= f.text_field :file_id -%>
  </div>

我必须按照RefineryCMS Engines Error: did not have a valid gemspec

更改引擎中的gemspec文件

这是我的gemfile的一部分:

ruby '2.1.1'
gem 'rails', '3.2.17'
gem 'pg'
# Refinery CMS
gem 'refinerycms', '~> 2.1.0'

# Optionally, specify additional Refinery CMS Extensions here:
gem 'refinerycms-acts-as-indexed', '~> 1.0.0'

# Refinery's news engine allows you to post updates to the news section of your website.
gem 'refinerycms-news', '~> 2.1.0'
gem 'refinerycms-articles', :path => 'vendor/extensions'

我正在使用Ubuntu 13.10。

这是一个错误还是我做错了什么?如何获得浏览文件的按钮?

1 个答案:

答案 0 :(得分:2)

好的,我已经弄明白了如何解决这个问题,感谢另外一个问题:https://english.stackexchange.com/questions/11481

问题是生成器没有创建正确的视图和模型。您必须手动进行此修改。

首先在视图中 _form.html.erb:

<div class='field'>
    <%= f.label :file_id -%>
    <%= render :partial => "/refinery/admin/resource_picker", :locals =>
    {
          :f => f,
          :field => :file_id,
          :resource => @article.file} %>
</div>

现在将此行添加到模型 article.rb

belongs_to :file, :class_name=>'Resource'

当然你也必须修改节目视图。例如:

  <section>
    <h1>File</h1>
    <p>
      <%= link_to("Download", @article.file.url) if @article.file %>
    </p>
  </section>

如果发电机会自动完成所有操作会很好,但是这样你就可以使用它。