3

我正在开发一个具有如下定义的嵌套资源的 Rails 项目。

  resources :projects do
    resources :entries
  end

对于entries#new表单,我想将project_id路径中的硬编码为条目视图目录中projects/project_id/entries/newproject_id字段。form_for当我写:

= f.label :project_id
%br
= f.select :project_id, @project

我收到以下错误:

undefined method `empty?' for #<Project:0x007fa9adc06120>

任何想法如何将@project 作为该字段发送到表单而不会出现 f.select 错误?我相信 f.select 需要一个集合,所以它不喜欢我只给它一个对象作为它的第二个参数。

谢谢你的帮助!

4

1 回答 1

3

我猜你有你@entry的控制器的新方法,像这样:

def new
  @entry = Entry.new
  # etc.

您可以改用它:

def new
  @entry = @project.entries.build
  # it will set project_id to the @project.id

在视图中:

= f.hidden_field :project_id

如果您不想直接在视图中使用 project_id 进行初始化:

= f.hidden_field :project_id, value: @project.id
于 2013-08-16T18:42:37.900 回答