参数的简单形式

时间:2016-10-31 21:19:25

标签: ruby-on-rails ruby routing

我有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类) 我怎样才能解决我的问题?

1 个答案:

答案 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的地方?