我有这些模特:
class User < ActiveRecord::Base
has_one :user_tms, :dependent => :destroy
accepts_nested_attributes_for :user_tms
end
class UserTms < ActiveRecord::Base
belongs_to :user
end
在UsersController中我有这个:
def new
@user = User.new
@user.build_user_tms
end
用户表单如下所示:
<%= form_for(@user) do |f| %>
<%= f.collection_select(:company_id, @companies, :id, :name, :include_blank => true) %>
<%= f.fields_for(:user_tms) do |tms_form| %>
<%= tms_form.collection_select(:department, @departments, :id, :description) %>
<% end %>
<% end %>
我认为非常基本的东西,但在提交表单时,我收到错误:
User tms user can't be blank
奇怪的是,在编辑现有用户时,一切正常。知道这里出了什么问题吗?谢谢!
答案 0 :(得分:0)
不确定但是有一个带有“s”的课程结束是不寻常的。
表名是什么? user_tms或user_tmses。我会在你的模型中设置复数名称。
我可能错过了其他的东西,如果是这样我会删除。不过,最好为新开发者提供更好的型号名称。 tms对大多数人来说意义不大。
答案 1 :(得分:0)
嗯,这真的很奇怪,因为我认为rails会自动处理这个问题,但看起来你的嵌套模型缺少对'nester'的引用。尝试手动提供。
@user.user_tms.user = @user
你必须在创建动作中这样做。记录保存的地方。
您使用的是哪种版本的导轨?
答案 2 :(得分:0)
我发现了什么是错的,我有一个方法会导致错误的返回值,这会干扰与这两个模型的关系的正常处理。