没有路线匹配[GET]“/ posts / new”

时间:2013-12-16 15:19:10

标签: ruby-on-rails ruby

我对ruby完全陌生,我正在逐步关注this ruby rails tutorial,除了我称之为我的app" cinema"的详细信息。

我创建了一个名为" posts"的资源,有一个名为posts controller的控制器类。从页面帖子/ new我应该发布带​​有标题的文本,并执行一个动作(显示)。我试图在路由文件和控制器类中添加show动作。

表单提交时应调用show动作,表单包含标题和文本字段,映射到数据库中。

paragraph 5.7中,有一条非明确的指令:它说要添加这一行:

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

到我的routes.rb文件,但它没有说明确切地写在哪里,我把它放在resources:posts下(也许它错了地方,它没有&#39}什么都不说了。

我还将show方法添加到控制器类:

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命令结果:

  

前缀动词URI模式控制器#动作
  welcome_index GET /welcome/index(.:format)welcome #index
          root GET / welcome #index
         帖子GET /posts(.:format)帖子#index
               POST /posts(.:format)帖子#create
      new_post GET /posts/new(.:format)帖子#new
     edit_post GET /posts/:id/edit(.:format)发布#edit
          发布GET /posts/:id(.:format)帖子#show
               PATCH /posts/:id(.:format)发布#upup
               PUT /posts/:id(.:format)发布#upcate
               DELETE /posts/:id(.:format)发布#troy

3 个答案:

答案 0 :(得分:5)

它不会告诉您将其添加到routes.rb。这是使用以下命令自动创建的路线之一:

resources :posts

routes.rb重新启动服务器中删除该行,然后继续学习本教程。

提示:您可以运行rake routes查看应用中的所有可用路由。

答案 1 :(得分:0)

你的整个问题似乎与我完全矛盾。

  • 你永远不会在铁路线路上这样做 -
    post GET /posts/:id(.:format) posts#show

    取而代之的是routes.rb文件 get 'posts/:id' => 'posts#show'

  • 路由是在优先级的基础上完成的(先到先得),所以如果你在资源:帖子之后添加获取'posts /:id',它就没有用作资源:帖子已经做了它适合你(阅读有关资源的rails路线指南)。

  • 您的表单提交应该是一个帖子数据,如果您使用资源'new'应该是'get'数据,相应的'post'应该是'create'。您的“新”路线有错误,那么您在哪里提交表单以提交表单数据?

我的建议是你保留'resources:post'并删除与你的路径文件相对应的所有其他内容。如果你还有其他一切,那么它应该可以正常工作。

答案 2 :(得分:-1)

  1. 资源:帖子 删除它
  2. 导轨
  3. 粘贴资源:帖子
  4. 导轨 我成功了