CarrierWave文件上传无法在rails中运行

时间:2014-04-08 13:51:10

标签: ruby-on-rails ruby ruby-on-rails-4 carrierwave

我需要将图片上传到我的电影收藏应用程序 我使用carrierwave来执行此操作(follows the railscasts steps

步骤1我添加gem' carrierwave'〜>〜> 0.9'到我的Gemfile然后运行bundle 第2步rails g uploader image然后在rake db之后使用rails g scaffold filmes name moviestype 第3步rails g migration add_image_to_filmes image:string然后rake db

其他步骤与railscasts相同

在我的电影模型中

attr_accessible :name, :moviestype, :image
  mount_uploader :image, ImageUploader

在我的_form.html.erb

<%= form_for @filme, :html => {:multipart => true} do |f| %>
  <% if @filme.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@filme.errors.count, "error") %> prohibited this filme from being saved:</h2>

      <ul>
      <% @filme.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br>
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :moviestype %><br>
    <%= f.text_field :moviestype %>
  </div>
  <div class="field">
   <br>
    <%= f.file_field :image %>
  </div>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
show.html.erb中的

<p id="notice"><%= notice %></p>

<p>
  <strong>Name:</strong>
  <%= @filme.name %>
</p>

<p>
  <strong>Moviestype:</strong>
  <%= @filme.moviestype %>
</p>
<%= image_tag @filme.image_url(:thumb) if @filme.image? %>

<%= link_to 'Edit', edit_filme_path(@filme) %> |
<%= link_to 'Back', filmes_path %>

问题是它没有上传任何图片,但电影名称和其他字段正在插入db.how我能解决这个问题吗?需要快速帮助。

1 个答案:

答案 0 :(得分:4)

根据错误日志,您未允许image保存在数据库中。 在FilmesController中,您需要允许:image作为

def filme_params
  params.require(:filme).permit(:name, :moviestype, :image) ## Add :image attribute
end