2016-05-18 11 views
-1

私は3つのモデル:StockholderFolderを持っています。それぞれStock has_many Stockholders、それぞれStockholderhas_one :folderです。 FolderレコードはStockholderモデル内に作成されます。株主のための情報を入力するフォームの提出の際親の親モデル内に子レコードを作成した後、子レコードにリダイレクト

before_create :build_default_folder 
private 
def build_default_folder 
    logger.debug "The debug #{self.holder_index}" 
    build_folder(name: "#{self.holder_index}. #{self.holder_name}", company_id: self.stock.company.id, parent_id: self.stock.company.folders.find_by_name("#{self.stock.security_series} #{self.stock.security_class} Stocks").id) 
    true 
end 

、私はちょうど作成されたフォルダにリダイレクトしたいと思います。そして、次のリダイレクトでそうしようとしています:

@stockholder=Stockholder.find(params[:id]) 
if @stockholder.update(stockholder_params) 
    redirect_to company_browse_path(@stockholder.stock.company, @stockholder.folder.id) 
end 

これは、しかし、次のエラーで結果:フォルダがすでに存在していると私は」の場合、しかし、何も問題はありません

Undefined method `id' for nil:NilClass 

株主の編集だけです。これは、コントローラがリダイレクトのパラメータとしてそれを使用できるようになるまで、フォルダが作成されていないと考えています。これをどうすれば回避できますか?

+0

何リダイレクトを 'redirect_to @ stockholder.folder'に置き換えるとどうなりますか? – agustaf

+0

@agustafお返事ありがとうございます。 'Nilにリダイレクトできません! ' – neanderslob

+0

フォルダレコードが実際に作成されますか? – agustaf

答えて

0

は、それを考え出し、次のようにリダイレクトを入力する必要がありました:

redirect_to company_browse_path(@stockholder.stock.company, Folder.find_by(stockholder: @stockholder)) 
0

あなたがしようとしていることは正確にはわかりませんが、欠けているものがあるようです。まず、FolderStockholderを関連付ける必要があります。次は、Folderを保存する必要があります。私は前が、ここでは私のためにどのような作品であることを見たことがないようbuild_folderが何をするか分からない:

before_create :build_default_folder 

private 
def build_default_folder 
    folder = Folder.new(stockholder_id: self.id, name: "a name") 
    folder.save 
end 
+0

残念ながら、上記の結果は同じです。 – neanderslob

関連する問題