2012-03-02 4 views
0

ユーザーのユーザーアカウントに関連付けられた複数の画像を持つユーザーの機能を追加したいと考えています。rails - モデルの一部のためのupdate_attributes。ファイルのアップロード

私は次のクラスがあります。私が提出した場合

<%= form_for @user do |u| %> 
    <%= u.fields_for :assets do |asset| %> 
    <%= asset.file_field :asset %> 
    <%= asset.text_field :description %><br /> 
    <% end %> 
    <%=u.submit %> 
<% end %> 

def add_profile_picture 
    @user=User.find(params[:id]) 
    1.times {@user.assets.build} 
end 

フォーム:私はちょうどアップロード画像の機能を持つ画面を持つようにしたい

class User < ActiveRecord::Base 
    has_many :assets 
    accepts_nested_attributes_for :assets 
end 

class Asset < ActiveRecord::Base 
    belongs_to :assetable, :polymorphic => true 
    belongs_to :user 
end 

をid値がdevelopment.logのokになるようです:

"id"=>"1" 

が、私はエラーを取得:nilのための

未定義のメソッド `update_attributes':私はちょうど、資産フィールドを持っているのでNilClass

を、私が行う必要がある特別なものはありますか?また、belongs_to:ユーザーが存在するため、問題を引き起こしている可能性がありますか? は、基本的には:

asset: 
    user_id: 
    assetable_type: 
    assetable_id: 

任意の助けいただければ幸いです。多くのRailsフォームの処理をしないでください。

THX

編集#1

class UsersController < ApplicationController 
    def add_profile_picture 
    @user=User.find(params[:id]) 
    1.times {@user.assets.build} 
    end 

THX

+0

コントローラの関連するアクションのコードを貼り付けることはできますか? –

+0

これは上で行われ、答えはthx – timpone

答えて

0

わかりました - ここにあなたのコードを持ついくつかの問題があります。詳細については、Action Controller OverviewガイドとRails Routingガイドの両方をお読みになることを強くお勧めします。

いずれにしても、フォームにはusers#updateアクションを使用しようとしているため、エラーが発生しています。UsersController

あなたにはいくつかのオプションがあります。 1つは、カスタムアクションに必要なルートを作成することです。または、ネストされたリソースを作成し、アセットを追加するためのフォームを作成することができます。

def new 
    @asset = Asset.new 
end 

def create 
    @asset = Asset.new(params[:asset]) 
    @asset.user_id = params[:user_id] if params[:user_id] 
    @asset.save! 
end 

AssetsControllerに、あなたはこれに似た何かを行うことができ、その後routes.rb

resources :users do 
    resources :assets, :only => [:new, :create] # Or any other actions you might want. It's best practise to limit these. 
end 

:この場合

、あなたはこのような何かをしたいです

:とフォームは次のようになります
+0

thxです。ネストされたリソースのURLは '/ users/1/assets/edit'になりますか?また、これはbelongs_toと多相関係を扱うでしょうか?もう一度 – timpone

+0

これを調べると、私はそれがユーザ#アップデートを使用していることを認識しています。ネストされた属性を使用して意図されているものです。 idはpostされたパラメータで渡されているので、動作するはずです。 – timpone

関連する問題