ペーパークリップなので、使用するたびに動作させる方法が異なるようです。
そのため、現時点ではフォームを送信しようとしましたが、失敗し、フォームが再レンダリングされます(フォームが保存されない場合に行うべきことです)。
これがこれまでの私の設定です
Gemfile
gem "paperclip", "~> 3.0"
コントローラ
def new
@post = Post.new
end
def create
@user = current_user
@post = @user.posts.new(params[:post])
if @post.save
redirect_to root_path, :notice => 'Post Successfully Created'
else
render :action => 'new'
end
end
投稿モデル
class Post < ActiveRecord::Base
belongs_to :category
belongs_to :user
attr_accessible :comments, :title, :category_id, :user_id, :photo
has_attached_file :photo, :styles => { :medium => "300x300>", :thumb => "100x100>" }
end
形
<%= form_for @post, :class => 'post-form', :html => { :multipart => true } do |f| %>
<%= f.label :title, "Title", :class => 'title_label' %>
<%= f.text_field :title %>
<%= f.label :category_id, "Choose Category", :class => 'title_label' %>
<%= f.collection_select(:category_id, Category.all, :id, :name, :prompt => "Please Select a Category") %>
<%= f.label :comments, "Comments", :class => 'title_label' %>
<%= f.text_area :comments %><br>
<%= f.file_field :photo %>
<%= f.submit 'Submit', :class => 'btn' %>
<% end %>
スキーマが次のようになっているため、写真を追加するための移行は成功しました
create_table "posts", :force => true do |t|
t.string "title"
t.text "comments"
t.integer "category_id"
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "photo_file_name"
t.string "photo_content_type"
t.integer "photo_file_size"
t.datetime "photo_updated_at"
終わり
これが期待どおりに機能しない理由を誰でも見ることができますか?
編集
画像のアップロードを許可するには、ImageMagick をインストールする必要がありますか?それとも、ビューで画像をレンダリングするためだけですか?
わかりましたので、コメントから私は試してデバッグし始め、これを私の見解に入れました
<%= @post.errors.full_messages %>
これ返してもらう
["Photo C:/Users/RICHAR~1/AppData/Local/Temp/bitman20130724-5600-agvtgn.png is not recognized by the 'identify' command.", "Photo C:/Users/RICHAR~1/AppData/Local/Temp/bitman20130724-5600-agvtgn.png is not recognized by the 'identify' command."]
何か案は?
ありがとう