0

Rails 3 には User モデルと Profile モデルの 2 つのモデルがあります。

class User < ActiveRecord::Base
  has_one :profile, :dependent => :destroy
end

class Profile < ActiveRecord::Base
  belongs_to :user
end

それらは、次のように、routes.rb ファイルでスコープされています。

resources :users do
  resources :profiles
end

したがって、プロファイルを作成するための私のフォームは次のようになります (SimpleForm を使用):

<%= simple_form_for([@user, @profile]) do |f| %>
  <%= f.error_notification %>
    ...(Other Inputs)
<% end %>

ただし、想定していたように、ユーザー ID がプロファイル モデルに自動的に送信されないようです。コントローラーから手動で設定する必要がありますか? または、何か不足していますか?

4

2 に答える 2

0

:method => :post をフォームに追加します

simple_form_for([@user, @profile], :method => :post) do |f| %>
于 2012-09-05T09:28:44.630 に答える
0

User と Profile の関係が実際に正しく機能していることを確認することから始めてください。私があなたが意味すると思うとき、あなたは実際に User モデルに「has_one :user」を入れました:

class User < ActiveRecord::Base
  has_one :profile, :dependent => :destroy
end

フォームでユーザー ID を送信するには、フォームは「localhost:3000/users/5/profiles/new」のような URL を持つページにある必要があり、ヘルパー「new_user_profile_path(5)」でリンクできます。 "、ID 5 のユーザーの場合。

フォームを送信すると、ProfilesController の create アクションにヒットします。次のようにすると、プロファイルが作成されます。

def create
  @user = User.find(params[:user_id])
  @profile = @user.build_profile(params[:profile])
  @profile.save!
end
于 2012-09-05T09:05:16.323 に答える