0

我有这些模型:

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

奇怪的是,在编辑现有用户时,一切正常。知道这里出了什么问题吗?谢谢!

4

3 回答 3

0

不确定,但以“s”结尾的类是不寻常的。

表名是什么?user_tms 或 user_tmses。我会在你的模型中设置复数名称。

如果是这样,我可能会错过其他东西,我会删除。不过,最好为新开发人员提供一个更好的型号名称。tms 对大多数人来说意义不大。

于 2012-05-25T07:48:56.387 回答
0

嗯,这真的很奇怪,因为我认为 rails 会自动处理这个问题,但您的嵌套模型似乎缺少对“嵌套器”的引用。尝试手动提供。

@user.user_tms.user = @user

您必须在创建操作中执行此操作,即。保存记录的位置。

您使用的是什么版本的导轨?

于 2012-05-25T19:39:29.537 回答
0

我发现出了什么问题,我有一个方法导致错误的返回值出现问题,这干扰了与这两个模型的关系的正常处理。

于 2012-05-29T09:14:23.793 回答