我目前第一次使用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',如果有的话?
谢谢!
答案 0 :(得分:2)
尝试将respond_with...
代码移到destroy
方法中。