我有2个模特,博客和帖子
resources :blogs do
resources :posts
end
所以,我也有一个协会。一个博客可以有很多帖子。所以我将链接发布到博客索引中的新帖子:
= link_to 'New Post', new_blog_post_path(@blog)
然后它会将您重定向到新帖子,该帖子会呈现如下形式:
= simple_form_for(@post) do |f|
= f.error_notification
.form-inputs
= f.input :title
= f.input :content
.form-actions
= f.button :submit
我收到了错误:
未定义的方法`posts_path'
我认为简单的表单需要blog_id,但我无法找到它。我试图将@ blog.id放到简单的表单中,但无论如何我得到了一个错误(id为nil类) 我怎样才能解决我的问题?
答案 0 :(得分:1)
我从未使用过simple_form_for,但在我看来,您的资源已经分配了关联。因此,您需要将其包含在表单定义中:
= simple_form_for([@blog, @post]) do |f|
= f.error_notification
.form-inputs
= f.input :title
= f.input :content
.form-actions
= f.button :submit
显然,您需要在控制器操作中使用@blog。
指向form_for
文档的链接:
http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for
编辑:
不确定代码中posts_path
的来源,但显然该路由不存在,因为所有post
路径都依赖于blog
。
您的代码中是否有引用post_path
的地方?