Ruby on rails 如何访问通过命名路由传递的对象
我是一个rails新手,有一个看似微不足道/基本的rails问题 我有一个链接,试图在其中传递有关对象的信息:Ruby on rails 如何访问通过命名路由传递的对象,ruby-on-rails,Ruby On Rails,我是一个rails新手,有一个看似微不足道/基本的rails问题 我有一个链接,试图在其中传递有关对象的信息: <% for author in @book.authors %> <%= link_to "compute", special_book_path(author) %> 但是出现了“没有ID就找不到作者”的错误 编辑:解决方案 special_book_path(author_id: author.id) 控制器 params[:author_id]
<% for author in @book.authors %>
<%= link_to "compute", special_book_path(author) %>
但是出现了“没有ID就找不到作者”的错误
编辑:解决方案
special_book_path(author_id: author.id)
控制器
params[:author_id]
当您设置命名路由时,您设置一个请求参数名称,通常是
:id
,当您使用特殊书籍路径(author)
时,此参数的值设置为author.to.\u param
,默认情况下是author.send(author.class.primary_键)
,通常是author.id
,因此可能只是
@author = Author.find(params[:id])
将起作用当您设置命名路由时,您设置请求参数名称,通常是
:id
,当您使用特殊路径(author)
时,此参数的值设置为author.to.\u param
,默认情况下是author.send(author.class.primary_key)
,通常是author.id
,所以可能很简单
@author = Author.find(params[:id])
<%= link_to "compute", special_book_path(author: author) %>
将起作用我想知道如果路线上没有关于book的信息,您如何在控制器代码中设置@book。只有一本特殊的书吗?上面的代码只是一个说明,因为实际的代码更复杂,更难阅读。我想知道如果路线没有关于书的信息,你如何在控制器代码中设置@book。只有一本特别的书吗?上面的代码只是一个例子,因为实际的代码更复杂,更难阅读。
<%= link_to "compute", special_book_path(author: author) %>