PostsController#中的NoMethodError按照入门指南创建

时间:2013-10-17 05:05:33

标签: ruby-on-rails ruby

我是Rails的新手,因此我按照入门指南进行操作,可在此处找到:http://edgeguides.rubyonrails.org/getting_started.html并在此处:http://guides.rubyonrails.org/getting_started.html但我无法使用5.6 / 5.7进行操作。

这是我的控制者:

class PostsController < ApplicationController
    def new
    end

    def show
        @post = Post.find(params[:id])
    end

    def create
      @post = Post.new(post_params)

      @post.save
      redirect_to @post
    end

    private
    def post_params
        params.require(:post).permit(:title, :text)
    end

end

这是我的表格:

<%= form_for :post, url: posts_path do |f| %>
    <p>
        <%= f.label :title %><br>
        <%= f.text_field :title %>
    </p>

    <p>
        <%= f.label :text %> <br>
        <%= f.text_area :text %>
    </p>

    <p>
        <%= f.submit %>
    </p>
<% end %>

这是routes.rb

Blog::Application.routes.draw do
  get "welcome/index"

  root 'welcome#index'

  resource :posts

end

但是当我提交时,我收到了这个错误:

NoMethodError in PostsController#create undefined method post_url' for #<PostsController:0x007f733c415418>,其摘要源突出显示行redirect_to @post。 我究竟做错了什么?我有ruby 1.9.3和rails 4.0.0

3 个答案:

答案 0 :(得分:10)

routes.rb我看到你

resource :posts

我相信,它应该是:

resources :posts

答案 1 :(得分:0)

您可能错过了在路线中添加帖子部分。尝试运行rake路线,看看你得到了什么结果:

  

rake routes | grep post

如果您在路线中提到了帖子,那么可能是您在这里使用了错误的路径。

答案 2 :(得分:0)

您是否在config/routes.rb添加了以下内容?

resources :posts