我是Rails的初学者。
我遇到了问题,但首先,这是一张图片来解释我想要做的事情:
verbally :我正在努力为资源创建一个新页面,我可以在其中添加-inide it-相关的子资源。
当我点击add new subresource
时,我想进入子资源的新页面。单击“保存”后,如果字段已完成,我应该重定向回新的资源页面,我应该在其中看到新关联的子资源。
我尝试以资源新形式插入这行代码:
link_to 'New Sub Resource', new_resource_sub_resource_path(@resource)
但是当我点击时,它会返回如下内容:
No route matches {:resource_id=>nil} missing required keys: [:resource_id]
显然,资源仍然没有保存,所以它抱怨,因为它没有Id ...这是可以解决的吗?如果是这样,怎么样?
答案 0 :(得分:1)
如果我在你的靴子上,我会使用form_tag
来解决这个问题,然后,在Resource#create
控制器操作中,我首先创建Resource
,然后迭代所有创建它们的子资源。
为了将所有Subresource
嵌入到提交的表单中,我将使用jQuery / JS。
我创建了一个示例,可以帮助您编写app/views/resources/new.html.erb
文件的代码。虽然我使用了简单的HTML / JS,但我确信它可以帮助你,并且希望它不会太难以移植到ERB
:)
类似的东西:
#app/controllers/resources_controller.rb
def create
@resource=Resource.create(params[:resource])
params[:subresource].each do |s|
#Assuming Resource has_many Subresources
@resource.subresources.create(s)
end
end
请注意必须以视图的形式适当填写params
哈希值。这只是一个基本的概念支架。
希望它有所帮助!
答案 1 :(得分:1)