2013-05-10 76 views
0

在路线:嵌套资源与Ruby的独立意见型号名称错误on Rails的

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 

请给予任何建议来解决这个问题。谢谢!

+0

您确定您要达到service_exps控制器的新操作吗? – 2013-05-10 05:36:50

+0

hey santhosh,如果在@ service_exp.user上单击(ctrl + click),它会转到新的操作。 – Rajeev 2013-05-10 05:52:34

回答

0

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

遵循以下步骤:

  • 查找文件,并从错误味精号线
  • 找到零的对象。
  • 确认对象被正确
0

首先初始化:@service_exp = user.service_exps.build将对象的数组指派给@service_exp - 由于用户谁has_many :service_exps

在你看来,你在做@service_exp.user - 调用一个不能工作的对象数组的用户。但是,像@service_exp.first.user这样的东西虽然会在数组中的特定对象上调用用户时发生。或者从form_for删除.user

+0

Carter shaw如果我删除.user或添加@ service_exp.first.user比它给出错误'undefined model_name' – Rajeev 2013-05-10 10:47:12

+0

在您的控制器中加载特定的service_exp而不是它们的阵列 – 2013-05-10 11:00:16

+0

您可以不只是调用service_exp.new(通过参数)在你的新动作? – 2013-05-10 11:14:47