未定义的方法'posts_path'

时间:2015-07-05 01:19:56

标签: ruby-on-rails ruby-on-rails-4 haml

我正在创建一个rails应用程序,用户可以在其中创建帖子。不幸的是,这些观点出了问题。 Post索引有效,但是当我尝试创建一个新帖子时,我得到#<#<Class:0x007fddd6657258>:0x007fddd39f6d58>"的错误“未定义的方法`posts_path'。奇怪的是它引用了我的表单视图的第1行,如下所示:

= form_for @post, html: { class: "form form-horizontal post" } do |f|
  .form-group
    = f.label :content, class: 'control-label'
    .controls
      = f.text_area :content, class: 'form-control', required: true
    = error_span(@post[:content])
  = f.submit nil,class: 'btn btn-primary'
  = link_to t('.cancel', :default => t("helpers.links.cancel")), user_posts_path, :class => 'btn btn-default'

从我的新视图中调用它:

- model_class = Post
.page-header
  %h1=t '.title', :default => [:'helpers.titles.new', 'New %{model}'], :model => model_class.model_name.human.titleize
= render :partial => "form"

我在代码中找不到'posts_path'的任何实例,这就是为什么我感到困惑。我的路线在这里正确定义:

Rails.application.routes.draw do
  root "users#index"
  resources :users do
    resources :posts
  end
end

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

你需要 = form_for [@user, @post], html: { class: "form form-horizontal post" } do |f| 由于您的post路由嵌套在user