Rails:重定向到评论提交后发布

时间:2014-12-22 05:34:20

标签: ruby-on-rails ruby-on-rails-4

我有一份表格可以提交有关帖子的评论 提交评论后,应将用户重定向到帖子。

点击“提交”按钮后出现以下错误:

  

CommentsController中的NameError#为CommentsController创建未定义的局部变量或方法`post'

错误指向评论控制器中的以下行:

redirect_to post_path(@post)

这是我的comments_controller.rb

class CommentsController < ApplicationController

before_action :authenticate_user!

def create
  @topic = Topic.find(params[:topic_id])
  @post = @topic.posts.find(params[:post_id])

  @comment = Comment.new(comment_params)
  @comment.post = @post

  redirect_to post_path(@post)
end

private

def comment_params
    params.require(:comment).permit(:title, :body)
  end
end

这是我的路线档案:

Rclone::Application.routes.draw do
  get "comments/create"
  devise_for :users
  resources :users, only: [:update]

  resources :topics do
    resources :posts, except: [:index] do
      resources :comments, only: [:create]
    end
  end

  get '/posts/:id/comments', to: 'posts#show'

  get 'about' => 'welcome#about'

  root to: 'welcome#index'
end

我在路线档案上做错了什么?

1 个答案:

答案 0 :(得分:1)

Comment.new不会主持或创建帖子。你需要做@comment.save。还可以使用prypry-nav gem来调试此类错误。 pry将停止执行您找到binding.pry的程序。从那时起,您可以逐行执行您的程序。只需在要停止执行的位置之前插入binding.pry一行。

示例

def create
  binding.pry
  @topic = Topic.find(params[:topic_id])

检查你的参数哈希,你会发现你的错误。我的猜测是topic_idpost_id

出错了

链接:
http://pryrepl.org/
https://github.com/pry/pry