0

在路线:

resources :users do
  resources :service_exps
end

用户模型:

has_many :service_exps

service_exps 模型:

belongs_to :user

在 service_exps 控制器中的新操作:

def new
  user = User.find(params[:user_id])
  @service_exp = user.service_exps.build
  render :layout => false
end  

在 service_exps 形式中:

= form_for ([@service_exp.user, @service_exp]), :remote => true do |s|
 .modal-body
  .row
    .span
      = s.label :org_name
      = s.text_field :org_name, :class => "span3"
  .row
    .span
      = s.label :position
      = s.text_field :position, :class => "span3"  
  .actions
    = s.submit 'Save',:class => "btn btn-info"

它给出错误

 undefined method `user' for nil:NilClass

请提出任何解决此问题的建议。谢谢!

4

2 回答 2

0

这些类型的错误很容易调试。错误消息说明了一切。您正在对 nil 对象调用方法(在本例中为“用户”)。

按着这些次序:

  • 从错误消息中找到文件和行号。
  • 找到 nil 的对象。
  • 确认对象已正确初始化
于 2013-05-10T06:21:18.537 回答
0

首先:@service_exp = user.service_exps.build将一个对象数组分配给@service_exp- 由于用户是谁has_many :service_exps

在您看来,您正在做@service_exp.user- 在一组不起作用的对象上调用用户。@service_exp.first.user但是,当在数组中的特定对象上调用用户时,类似的东西。或从 .user 中删除form_for

于 2013-05-10T10:34:51.130 回答