データを保存する前に外部キーを関連付けることができません(ネットワークモデルのフィールド 'user_id'はデータベースに保存されると空白になります)。私は「複数のモデルをフォームに関連付ける
class UsersController < ApplicationController
def new
@user = User.new
@network = @user.build_network
@title = "Sign Up"
end
def create
@user = User.new(params[:user])
if (@user.save)
@network = Network.new(params[:network])
if (@network.save)
sign_in @user
flash[:success] = "Welcome!"
redirect_to @user
else
@title = "Sign up"
render 'new'
end
else
@title = "Sign up"
render 'new'
end
end
:
class Network < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_one :network, :foreign_key => "user_id",
:dependent => :destroy
コントローラ:私は私のコードは、ずさんな:-)であればとても恐縮してください
モデルRoRのに新たなんです(form_forとfields_forを使用して)問題なしでビューからすべてのユーザー入力を得ることができます。 @ user.build_networkを使用することに加えて、has_one関連付けを明示的に定義する必要がありますか? accepts_nested_attributes_for
を使用しての提案パー
、私は、ユーザーモデルで
def new
@user = User.new
@user.build_network
@title = "Sign Up"
end
def create
@user = User.new(params[:user])
if (@user.save)
sign_in @user
flash[:success] = "Welcome!"
redirect_to @user
else
@title = "Sign up"
render 'new'
end
end
更新関連する私のコントローラをクリーンアップ:私が提出したときしかし、network_attributesはすべて空白になってい
has_one :network, :class_name => 'Network',
:foreign_key => "user_id",
:dependent => :destroy
accepts_nested_attributes_for :network,
:reject_if => :all_blank,
:allow_destroy => true
フォーム。私はhttp://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes(および多く)
私は私が使用して属性にアクセスすることができるよので、ビュー/フォームの問題だとは思わないだけでなく、提供されたリンクの指示に従っているNetwork.new(params[:network]
どんな考え/提案ですか?
チップをありがとう。ネットワーク属性の保存に関する問題がまだ残っているので、質問を更新しました。 –
心配しないで、変更を反映するために私の答えを更新しました。 –