Rails将params传递给新的动作

时间:2016-03-14 23:42:52

标签: ruby-on-rails action params

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

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

我如何以轨道方式执行此操作? link_to如下所示: link_to new_book_path(:bookshelf => bookshelf)。 我尝试用 @ book.bookshelf阅读并传递参数 =在create-action中的Bookshelf.find(params [:bookshelf]),但它是一个空字符串。

1 个答案:

答案 0 :(得分:8)

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

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

当您点击该链接时,您的网址应该包含?bookshelf_id = 123(或其他)

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

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

如果采用这种方法,则无需执行任何其他操作。像往常一样通过params。

如果您愿意在控制器中访问此参数:

bookshelf_id = params['bookshelf_id']

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