2

我是 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

4

3 回答 3

14

在你的routes.rb我看到你已经

resource :posts

我相信,它应该是:

resources :posts
于 2013-10-17T05:18:19.770 回答
0

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

耙路线 | grep 帖子

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

于 2013-10-17T05:12:52.927 回答
0

您是否将以下行添加到您的config/routes.rb?

resources :posts
于 2013-10-17T05:13:38.327 回答