我在Rails 3中有两个模型 - 用户模型和个人资料模型。
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似乎没有像我假设的那样自动发送到配置文件模型。我是否必须通过控制器手动设置?或者我错过了什么?
答案 0 :(得分:0)
首先,您应该确保User和Profile之间的关系确实正常工作。当我认为你的意思是:
时,你实际上已经在你的用户模型中添加了“has_one:user”class User < ActiveRecord::Base
has_one :profile, :dependent => :destroy
end
为了发送带有表单的用户ID,表单应该位于页面上,其URL可以是“localhost:3000 / users / 5 / profiles / new”,您可以使用帮助程序“new_user_profile_path”链接到该页面(5)“,对于ID为5的用户。
当您提交表单时,它将在您的ProfilesController中点击创建操作。以下内容应导致创建配置文件:
def create
@user = User.find(params[:user_id])
@profile = @user.build_profile(params[:profile])
@profile.save!
end
答案 1 :(得分:0)
add:method =&gt; :发布到您的表单,因为您的HTML请求是GET,应该是POST
simple_form_for([@user, @profile], :method => :post) do |f| %>