Rails 将参数传递给新操作

Rails passing params to new action

我链接到一个在 URL 中给出参数的新动作。该参数应该在创建操作中可读,以便我可以将它放入新创建的对象中。

具体: 我在 书架 的展示页面上。有一个 link_to 链接到 book 的新操作,其参数包含书架的 ID。创建 book 时,我想将 bookshelf 的 id 放入书的外键中(bookshelf_id).

我如何以 rails 方式执行此操作? link_to 看起来像这样:link_to new_book_path(:bookshelf => bookshelf)。 我尝试使用 @book.bookshelf 读取并传递参数 = Bookshelf.find(params[:bookshelf]) 在创建操作中,但它是一个空字符串。

Post 关系。如果您在书架展示页面上,您可以访问该书架实例

<%= link_to new_book_path(:bookshelf_id => params[:id]) %>

当您单击 link 时,您的 url 应该有 ?bookshelf_id=123(或其他)

然后,要从新页面访问该参数,您可以在您的表单中执行此操作(假设它是常规 rails 表单):

<%= f.hidden_field :bookshelf_id, value: params['bookshelf_id'] %>

如果采用这种方法,则无需执行任何额外操作。像往常一样传递参数即可。

如果您希望可以在控制器中访问此参数:

bookshelf_id = params['bookshelf_id']

您可以在那里设置它,然后将它添加到您正在创建的对象中。