0

I'm not sure what I'm doing wrong. I have a Projects resource:

resources :projects

In ProjectsController#new, I'm creating a project and rendering it in new.html.erb:

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

This gets POSTed but instead of being handled by Projects#create it's being handled by the home action:

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

Here are my routes:

                    /                            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

EDITED: I found the problem.

This is the old routes file:

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

end

The line "match '/projects'" was the reason it was always being handled by home.

4

2 に答える 2

0

ルートファイルを表示.........問題はルートファイルの2行目と3行目にあり、2行目にhttp動詞を指定していないため、代わりにホームアクションに移動します。作成アクションの...将来このエラーを防ぐために、ルートファイルで動詞を指定してください...

于 2012-11-02T14:00:22.353 に答える
0

あなたのルートファイルはこれでなければなりません

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

end

これで問題が解決します

リソース宣言の前にこれらの URL を指定していたとき、インデックス ページの実行を制限していたため、実行する必要があります。

于 2012-11-02T14:30:23.387 に答える