【问题标题】:NoMethodError in PostsController#create following the getting started guidePostsController#create 中的 NoMethodError 遵循入门指南
【发布时间】:2018-01-25 21:24:08
【问题描述】:

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

【问题讨论】:

  • 发布您的完整后控制器
  • 也发布您的routes.rb

标签: ruby-on-rails ruby


【解决方案1】:

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

resource :posts

我相信,应该是:

resources :posts

【讨论】:

【解决方案2】:

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

rake 路线 | grep 发帖

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

【讨论】:

  • 我收到帖子 POST /posts(.:format) 帖子#create new_posts GET /posts/new(.:format) 帖子#new edit_posts GET /posts/edit(.:format) 帖子#edit获取 /posts(.:format) 帖子#show PATCH /posts(.:format) 帖子#update PUT /posts(.:format) 帖子#update DELETE /posts(.:format) 帖子#destroy
  • 你说你在redirect_to @post 行收到错误??
  • 是的,没错,我突出显示了redirect_to @post这一行
  • 改用redirect_to new_post_path(@post)
【解决方案3】:

您是否在config/routes.rb 中添加了以下行?

resources :posts

【讨论】:

  • Yes 存在于我的问题中的 routes.rb 文件中
  • 添加此行后是否重新启动服务器?
  • 不,我没有在指南中提到,但没有解决我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多