将资源ID插入另一个资源的参数中的好方法是什么?

时间:2012-03-19 23:21:52

标签: ruby-on-rails-3

我对编程很陌生,所以我很难解释这一点 - 请原谅。

我的rails应用程序中有一个Document模型和一个Note模型。注释属于文档,文档有许多注释 - 注释表中的外键是document_id。

在我的文档显示页面上,我有一个注释表单,它使用:content属性作为text_area字段。

我想要做的是将文档的id传递给note params,这样笔记就会包含:用户提交的内容:document_id,基于document_path。

目前我正在使用hidden_​​field表单助手将:document_id添加到note的params哈希中,并将整个内容发送到NotesController,但我希望有更清洁/可能更简单的方法。

如果这是有道理的,有人可以提出更好的方法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

在你的路线中有类似

的东西
resources :documents do
  resources :notes
end

然后你应该通过这条路线添加一个音符

/文档/ 5 /笔记/新

然后在你的NotesController中有

def create
  @document = Document.find(params[:document_id])
  @note = @document.notes.build(params[:note])
  if @note.save
    # Blah
  else
    # Blah
  end
end

(决不会对此进行测试 - 但它会让您了解如何在没有隐藏字段的情况下以RESTFUL方式执行此操作)