0

ペーパークリップなので、使用するたびに動作させる方法が異なるようです。

そのため、現時点ではフォームを送信しようとしましたが、失敗し、フォームが再レンダリングされます(フォームが保存されない場合に行うべきことです)。

これがこれまでの私の設定です

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."]

何か案は?

ありがとう

4

1 に答える 1

1

ステップ 1 ペーパークリップのドキュメントから:

ImageMagickがインストールされている必要があり、Paperclipはそれにアクセスできる必要があります。確実に実行するには、コマンド ラインで which convert (ImageMagick ユーティリティの 1 つ) を実行します。これにより、そのユーティリティがインストールされているパスが表示されます。たとえば、 を返す場合があり/usr/local/bin/convertます。

次に、環境設定ファイルで、そのディレクトリをパスに追加して、Paperclip にそこを探すように指示します。

モードではdevelopment、次の行を に追加できますconfig/environments/development.rb:

Paperclip.options[:command_path] = "/usr/local/bin/"

ステップ 2agvtgn.png is not recognized by the 'identify' command.エラー の場合:

Windows でこれを行う方法がわからない場合、Linux の場合は次のようにする必要があります。

$ which identify
/path/to/identify

でそのパスに設定command_pathしますconfig/environments/development.rb

Paperclip.options[:command_path] = "/path/to"

ImageMagickまた、インストールする必要があります

http://ganeshprasadsr.blogspot.com/2010/12/paperclip-issue-is-not-recognized-by.html


私の考え- ImageMagick をインストールするだけです。


ps Windows は最悪の開発マシンです。Linux で実行されている仮想マシンを少なくとも 1 つインストールできます。

于 2013-07-24T10:19:12.527 に答える