我链接到一个在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]),但它是一个空字符串。
答案 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']
您可以在那里进行设置,然后将其添加到您正在创建的对象中。