我正在尝试使用评论显示页面上的所有表单添加评论的问题和答案。添加问题有效,但添加答案会重定向到'/ questions // answers'并显示错误
No route matches [POST] "/questions/answers"
以下是我的路线:
resources :comments do
resources :questions do
end
end
resources :questions do
resources :answers do
end
end
以下是评论显示视图:
<% @questions.each do |question| %>
<%= @comment.question %>
<%= render :partial => "answers/form" %>
<% end %>
答案形式:
<%= simple_form_for [@question, Answer.new] do |f| %>
<%= f.input :body %>
<% end %>
和评论控制器:
def show
@comment = Comment.find params[:id]
@questions = @comment.questions
@answer = Answer.new
end
最后答案控制器:
def create
@question = Question.find(params[:question_id])
@answer = @question.answers.new(answer_params)
end
谢谢!
答案 0 :(得分:1)
在你的答案表格中
<%= simple_form_for [@question, Answer.new] do |f| %>
<%= f.input :body %>
<% end %>
从哪里获得@question
可能是以下更改将解决您的问题尝试
以下是评论显示视图:
<% @questions.each do |question| %>
<%= @comment.question %>
<%= render :partial => "answers/form", locals: {question:question} %>
<% end %>
答案形式:
<%= simple_form_for [question, Answer.new] do |f| %>
<%= f.input :body %>
<% end %>
和你的答案控制器
def create
@question = Question.find(params[:question_id])
@answer = @question.answers.new(answer_params)
@answer.save
end
答案 1 :(得分:0)
你更有可能找到这样的工作:
questions/1/answers
猜猜。你可以检查rake routes
的输出,我想你会看到这样的东西:
questions/:id/answers
答案 2 :(得分:0)
在create方法中,您永远不会保存到数据库。 @answer
永远不会有身份证明。
AnswersController#创建
@answer = @question.answers.create(answer_params)
不
@answer = @question.answers.new(answer_params)
我没有在代码中看到问题出错的地方,但即使它不是修复程序......这也是一个问题。