respond_with未定义的方法

时间:2014-10-23 19:07:43

标签: ruby-on-rails

我目前第一次使用respond_with和respond_to方法。我的控制器文件如下所示:

class CommentsController < ApplicationController
  respond_to :html, :js

  def create
    @post = Post.find(params[:post_id])
    @comment = current_user.comments.build(comment_params)
    @comment.post = @post
    @comment.user = current_user
    authorize @post
    if @comment.save
      flash[:notice] = "Comment was saved."
      redirect_to [@post.topic, @post]
    else
      flash[:error] = "There was an error saving the comment. Please try again."
      redirect_to [@post.topic, @post]
    end
  end

  def destroy
    @post = Post.find(params[:post_id])
    @comment = @post.comments.find(params[:id])

    authorize @comment
    if @comment.destroy
      flash[:notice] = "Comment was removed."
    else
      flash[:error] = "Comment couldn't be deleted. Try again."
    end
  end

  respond_with(@comment) do |format|
    format.html { redirect_to [post.topic, @post] }
  end

private

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

我收到错误,“RoutingError:Undefined Method respond_with”。

我用google搜索“respond_with”,在Rails指南中它说我需要一个名为'响应者'的宝石,这是有道理的。但是,当我试图添加它时,我遇到了麻烦;显然,'响应者'需要另一个宝石,'铁路',哪些铁轨需要不同版本的宝石。至少到目前为止,我的导轨在没有“轨道”的情况下工作得很好。

有没有人知道我是否真的需要'响应者',或者其他可能导致我的错误消息,或者我应该安装哪个版本的'railties',如果有的话?

谢谢!

1 个答案:

答案 0 :(得分:2)

尝试将respond_with...代码移到destroy方法中。