2013-12-16 87 views
0

我完全是ruby的新手,我一直在跟着this ruby rails tutorial,除了我稱之爲應用程序「電影」的細節。沒有路線匹配[GET]「/ posts/new」

我創建了一個名爲「posts」的資源,裏面有一個名爲posts controller的控制器類。從頁面帖子/新我應該發佈標題的文本,並執行一個動作(顯示)。我正在嘗試在路由文件和控制器類中添加show動作。

當提交表單時,應該調用show動作,表單包含映射到數據庫中的標題和文本字段。

paragraph 5.7,有一個非明確指令:它說,加入這行:

post GET /posts/:id(.:format)  posts#show 

要我routes.rb文件,但它並沒有說在哪裏它到底寫,我把它放在resources:posts(也許這是錯誤的地方,它沒有說任何關於這個)。

我也加入了表演方法給控制器類:

def show 
    @post = Post.find(params[:id]) 
end 
private 
    def post_params 
     params.require(:post).permit(:title,:test); 
    end 

但是,當我提交表單我仍然得到這個錯誤:

enter image description here

rake routes命令結果:

Prefix Verb URI Pattern Controller#Action
welcome_index GET /welcome/index(.:format) welcome#index
root GET / welcome#index
posts GET /posts(.:format) posts#index
POST /posts(.:format) posts#create
new_post GET /posts/new(.:format) posts#new
edit_post GET /posts/:id/edit(.:format) posts#edit
post GET /posts/:id(.:format) posts#show
PATCH /posts/:id(.:format) posts#update
PUT /posts/:id(.:format) posts#update
DELETE /posts/:id(.:format) posts#destroy

+2

嘗試重新啓動您的滑軌服務器 –

+2

您可以向我們展示您的'routes.rb'文件嗎? – janfoeh

+0

通過運行:'rake routes'向我們顯示您的路線 –

回答

5

它不會告訴你一個dd它到routes.rb。這是一個與自動創建的途徑之一:

resources :posts 

routes.rb重新啓動服務器刪除線,並繼續與教程。

提示:您可以運行rake routes以查看應用程序中的所有可用路線。

0

您的整個問題似乎與我完全矛盾。

  • 你從來沒有在軌道路線做到這一點 -
    post GET /posts/:id(.:format) posts#show

    而是在routes.rb中文件。
    get 'posts/:id' => 'posts#show'

  • 的路由優先的基礎上(先到先得)來完成,因此,如果您要添加得到「帖子/:身份證」資源後:帖子,它是沒有用的資源:帖子已經爲你做了(閱讀關於資源的導軌路由指南)。

  • 您的表單提交應該是一個發佈數據,如果您使用的是資源「新」應該是'獲取'數據,相應的'發佈'應該是'創建'。您的'新'路線有錯誤,那麼您還要在哪裏渲染表單以提交表單數據?

我的建議是,你保留'資源:發佈',並從路由文件中刪除所有其他相應於你的帖子。如果你有其他所有的東西,那麼它應該可以正常工作。