Warum, wenn ich ein Bild mit Carrierwave in Rails 4 hochlade, ist die Datenbank ein Rollback?

Ich versuche, Bilddatei mit Carrierwave in Schienen 4 zu speichern, aber wenn Submit-Button klicken Sie auf Datenbank ist Rollback? Warum ?

Wenn ich kein Bild zum Hochladen auswähle und nur eine Zeichenfolge sende, funktionieren alle ordnungsgemäß. Wenn ich jedoch eine Bilddatei sende, erhalte ich die folgende Fehlermeldung:

TypeError: can't cast ActionDispatch::Http::UploadedFile to string: INSERT INTO "items" ("created_at", "description", "image", "name", "store_id", "sub_items", "title", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?)
   (0.2ms)  rollback transaction
*** ActiveRecord::StatementInvalid Exception: TypeError: can't cast ActionDispatch::Http::UploadedFile to string: INSERT INTO "items" ("created_at", "description", "image", "name", "store_id", "sub_items", "title", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?)

meine Sicht :

<%= form_for @items, :url => dashboard_create_items_path(@store.id), :html => {:multipart => true} do |f| %>
  <%= f.label :name, 'Name' %>
  <%= f.text_field :name %><br />
  <%= f.label :title, 'Title' %>
  <%= f.text_field :title %><br />
  <%= f.label :image, 'Image' %>
   <%= f.file_field :image %><br />
  <%= f.label :description, 'Description' %>
  <%= f.text_field :description %><br />
  <%= f.label :sub_items %><br>
  <%= f.select :sub_items, options_for_select([["true", true], ["false", false]]), :selected => 'true' %><br />
  <%= f.submit %>
<% end %>

Mein Controller:

def create_items    
    store = Store.find(params[:id])
    @items = store.items.create(item_params)

    if @items
      redirect_to dashboard_show_items_url(@items.id, store.id)
    else
      redirect_to dashboard_new_items_url
    end
  end

private

    def item_params
      params.require(:item).permit(:name, :title, :image, :description, :sub_items, :store_id)
    end

Bitte sag mir, wenn ich falsch liege. Danke schon mal

Antworten auf die Frage(1)

Ihre Antwort auf die Frage