Rails帖子由Controller#Home处理



我不确定我在做什么错。我有一个项目资源:

resources :projects

在projectscontroller#new中,我正在创建一个项目并在new.html.erb中进行渲染:

<%= form_for @project do |f| %>
  <%= f.label :name %>
  <%= f.text_field :name%><br/>
  <%= f.submit  %>
<% end %>

这将发布发布,但没有由项目#来处理#创建它是由家庭行动处理的:

Started POST "/projects" for 127.0.0.1 at 2012-11-02 08:47:36 -0500
Processing by ProjectsController#home as HTML

这是我的路线:

                    /                            projects#home
    projects        /projects(.:format)          projects#home
             GET    /projects(.:format)          projects#index
             POST   /projects(.:format)          projects#create
 new_project GET    /projects/new(.:format)      projects#new
edit_project GET    /projects/:id/edit(.:format) projects#edit
     project GET    /projects/:id(.:format)      projects#show
             PUT    /projects/:id(.:format)      projects#update
             DELETE /projects/:id(.:format)      projects#destroy

编辑:我发现了问题。

这是旧路由文件:

SolarMesh::Application.routes.draw do
  match '/' => 'projects#home'
  match '/projects' => 'projects#home'
  resources :projects
end

行"匹配'/projects'"是它总是在家中处理的原因。

向我展示您的路线文件.........问题在您未在第二行中指定HTTP动词的路由文件的第二行和第三行,因此它将转到家庭操作而不是创建动作...因此请在您的中指定动词路由文件以防止此错误...

您的路由文件应该是此

SolarMesh::Application.routes.draw do
   resources :projects
   match '/projects' => 'projects#home'
   match '/' => 'projects#home'
end

这将解决您的问题

,因为当您在资源声明之前指定这些URL时,它们正在限制索引页面现在运行

最新更新