2013-03-16 145 views
0

我新的轨道,我试图创建一个简单的书签表:轨路由错误的路由匹配[POST]“/控制器/新”

def up 
create_table :bookmarks do |t| 
    t.string :path,  :null => false 
    t.integer :user_id,  :null => false 

    t.timestamps 
end 

add_index :bookmarks, :user_id 
add_index :bookmarks, :path 
    end 

然后我有这个在我的位指示:

# GET bookmark/new 
# GET bookmark/new.json 
def new 
    @bookmark = Bookmark.new 
end 

# POST bookmark/new 
# POST bookmark/new.json 
def create 
    @bookmark = Bookmark.new(params[:bookmark]) 
    if @bookmark.save 
     flash[:success] = "Bookmark Saved" 
    else 
     flash[:failure] = "Failed !" 
    end 
end 

,我的看法是这样的:

<%= form_for :bookmark do |bookmark| %> 
<%= bookmark.label :path %> 
<%= bookmark.text_field :path %> 

<%= bookmark.label :user_id %> 
<%= bookmark.text_field :user_id %> 

<%= bookmark.submit "Add bookmark" %> 
<% end %> 

终于运行耙路线获取路线名单:

  bookmark_index GET /bookmark(.:format)   bookmark#index 
        POST /bookmark(.:format)   bookmark#create 
     new_bookmark GET /bookmark/new(.:format)  bookmark#new 
     edit_bookmark GET /bookmark/:id/edit(.:format) bookmark#edit 
      bookmark GET /bookmark/:id(.:format)  bookmark#show 
        PUT /bookmark/:id(.:format)  bookmark#update 
        DELETE /bookmark/:id(.:format)  bookmark#destroy 

,当我尝试提交表单我得到这个错误:

Routing Error 

No route matches [POST] "/bookmark/new" 

Try running rake routes for more information on available routes. 

编辑:

更改:书签@bookmark抛出这个错误:

NoMethodError in Bookmark#new 

Showing /media/wahtver/600415AD27D78282/3pces/pces/app/views/shared/_bookmark_form.html.erb where line #1 raised: 

undefined method `bookmarks_path' for #<#<Class:0x00000003a48398>:0x007f1034b6b908> 

Extracted source (around line #1): 

1: <%= form_for @bookmark do |bookmark| %> 
2: <%= bookmark.label :path %> 
3: <%= bookmark.text_field :path %> 
4: 

有什么问题?

感谢

回答

1
<%= form_for @bookmark do |bookmark| %> 

,并在该错误信息不会

<%= form_for :bookmark do |bookmark| %> 

更仔细。它使用POST,而不是GET

编辑:你的路线应该是resources :bookmarks

当你运行rake routes它应该给你:

bookmarks GET /bookmarks(.:format) bookmarks#index

+0

改变了行,现在它在'form_for'行中引发了这个错误'NoMethodError in Bookmark#new'。 – Wahtever 2013-03-16 14:42:42

+0

哪种方法?复制/粘贴整个错误。 – Robin 2013-03-16 14:49:31

+0

主要问题已更新 – Wahtever 2013-03-16 14:55:28

0

你怎么宣布你的路线?你有没有对你的route.rb文件resource :bookmarkresources :bookmarks

如果您在创建方法看你的控制器,你有这样的:

# POST bookmark/new 
# POST bookmark/new.json 
def create 

注意一点轨当您使用脚手架(我猜你产生有支架控制器)每个方法上面自动生成的评论它应该是POST /bookmarksPOST /bookmark。如果您因为某些原因使用脚手架导轨生成的路线不好。

显示您的routes.rb文件。