2016-08-15 27 views
0

我有一个名为Trl的模型和一个名为Project的模型。该协会是:Rails 4 - 强大的参数 - 关联属性

项目

belongs_to :Trl 

的Tr1

has_many :projects 

在我的项目的形式,我请用户选择TRL,项目形式有:

<%= render partial: 'trls/project', locals: { f: f } %> 

那部分有:

<%= f.input :trl, label: false do %> 
    <%= f.select :trl, Trl.all.map { |t| [t.title, t.id] }, 
          include_blank: false, 
          prompt: 'Select one' %> 

当我保存这一切并尝试使用它,我得到一个错误,指出:

undefined method `title' for nil:NilClass 

我不知道我是否需要包括trl_attribute [:标题]在我的项目控制器强PARAMS。填写表单的用户不能创建标题,他们只能从已经创建的列表中选择一个。

这种情况是否需要包含在强参数中?

回答

0

是的,你必须将它包含在白色参数列表中。在这里,你的错误是关于无对象,首先你需要解决它。

试试这个:

<%= f.select :trl, Trl.all.map { |t| [t.try(:title), t.try(:id)] }, include_blank: false, prompt: 'Select one' %> 

然后包括它变成strong parameters名单。

+0

是否需要向项目控制器添加其他任何内容才能使其工作?如果我在控制台中设置它,它会起作用。我无法从他的形式做到。 – Mel

+0

你从轨道控制台上的Trl获取记录吗? –

+0

是的 - 我可以从控制台添加并检查它,但是在html视图中出现错误 – Mel