在rails中当前请求参数的含义是什么?不是它的参数[:xxxx]?

时间:2011-10-16 03:57:35

标签: ruby-on-rails

当我写这篇文章时:

book_structure_path(structure)

我收到错误:

book_structure_url failed to generate from {:controller=>"structures", :book_id=>#Structure id: 1, book_id: 1, unit: 1, chapter: 1, title: .........

但是这个:

book_structure_path(params[:book_id], structure)

没关系。

params中只有一个id,我只需要id,但是Rails填充了它中的对象?

3 个答案:

答案 0 :(得分:1)

看看你的错误:

book_structure_url failed to generate from {:controller=>"structures", :book_id=>#Structure id: 1, book_id: 1, unit: 1, chapter: 1, title: .........

它试图将结构用作图书记录 - 这显然是错误的。 Structure是一个嵌套资源,它依赖于Book资源作为其父资源。您还需要将它传递给路径助手:

book_structure_url(book, structure)

答案 1 :(得分:0)

您可以直接传入ID:

book_structure_path(structure.id)

看起来它应该已经想到了这一点,但这是一种解决方法。也许你的代码中有其他东西导致了这一点。

routes.rb文件中有什么奇怪的东西?也许您structures的路线不是典型的/:controller/:id/:action种?

答案 2 :(得分:0)

Rails url helpers不会读取params [] hash。

他们采用明确的参数并从中构建网址。您需要传递每个数据,在本案例和结构中

book_structure_url(book, structure)

book_structure_url(params[:id], params[:structure_id])

或者你必须识别路线的任何东西。