我正在创建一个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
非常感谢任何帮助。
答案 0 :(得分:3)
你需要
= form_for [@user, @post], html: { class: "form form-horizontal post" } do |f|
由于您的post
路由嵌套在user