0

新しいユーザーを作成し、クリップで写真をアップロードしようとしています。ログイン、電子メール、およびパスワードをデータベースに渡しますが、写真の詳細は渡しません。誰が私が間違っているのかを見ることができますか? Rails 3.06 と Ruby 1.9.2 を使用しています

これは show.html.erb からのものです

    <div id="pic"><%= image_tag @user.photo.url(:main) %></div> 

これはuser.rbからのものです

class User < ActiveRecord::Base
    attr_accessible :photo
    has_attached_file :photo, :styles => {:small => "70x70>", :main => "250x250>" },
              :url =>  "public/system/photos/:id/:style/:basename.:extension"

これは、機能する edit.html.erb と機能しない new.html.erb で使用されるフォームです。

     <%= form_for @user, :html => {:multipart => true} do |f| %>
       <div class="field">
        <%= f.label :login %><br />
        <%= f.text_field :login %>
       </div>
      <div class="field">
         <%= f.label :email %><br />
         <%= f.text_field :email %>
      </div>
      <div class="field">
         <%= f.label :password %><br />
         <%= f.text_field :password %>
      </div>
      <p>
         <%= f.file_field :photo %>
      </p>
      <div class="actions">
         <%= f.submit %>
     </div>
    <% end %>

これは users_controller.rb からのものです

    def create
       @user = User.new
       @user.login = (params[:user][:login])
       @user.email = (params[:user][:email])
       @user.password = (params[:user][:password])
       @user.photo_file_name = (params[:user][:photo_file_name])
       @user.photo_content_type = (params[:user][:photo_content_type])
       @user.photo_file_size = (params[:user][:photo_file_size])

そして、これは端末出力です

127.0.0.1 の POST "/users" を 2013-06-08 13:18:58 +0100 で開始 HTML パラメーターとして UsersController#create で処理: {"utf8"=>"✓", "authenticity_token"=>"4Qvx+ aPv9fpOQYk7aAv5iupoBA8aPBYelcjQPh4aM2I=", "user"=>{"login"=>"meme", "email"=>"me@me.com", "password"=>"[FILTERED]", "photo"=>#> }, "commit"=>"Create User"} User Load (1.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1 User Load (0.5ms) SELECT "users" ."id" FROM "users" WHERE ("users"."login" = 'meme') LIMIT 1 User Load (0.3ms) SELECT "users"."id" FROM "users"WHERE ("users"."email" = 'me@me.com') LIMIT 1 AREL (0.9ms) INSERT INTO "users" ("login", "email", "password", "created_at", "updated_at" , "photo_file_name", "photo_content_type", "photo_file_size") VALUES ('meme', 'me@me.com', 'meme', '2013-06-08 12:18:58.686143', '2013-06-08 12:18:58.686143', NULL, NULL, NULL) [ペーパークリップ] 添付ファイルを保存しています。com', 'meme', '2013-06-08 12:18:58.686143', '2013-06-08 12:18:58.686143', NULL, NULL, NULL) [ペーパークリップ] 添付ファイルの保存。com', 'meme', '2013-06-08 12:18:58.686143', '2013-06-08 12:18:58.686143', NULL, NULL, NULL) [ペーパークリップ] 添付ファイルの保存。

4

1 に答える 1

0

ペーパークリップのためにやりすぎているように見えますが、その過程で誤ってそれをバイパスしています。create アクションを次のように変更します。

def create
  @user = User.new params[:user]
  if @user.save
    ...

補足として、メソッド new、create、および update_attributes は、params[:user] を受け取るように設計されているため、7 行のモデル属性割り当てコードを用意する必要はありません。

于 2013-06-09T03:12:53.927 に答える