当我写这篇文章时:
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填充了它中的对象?
答案 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])
或者你必须识别路线的任何东西。