使用rails 4强参数时出错。
ActionController::ParameterMissing at /questions
param not found: question
我有Question model
和questions controller
。问题表格有content column
这是questions controller
class QuestionsController < ApplicationController
def index
@question = Question.new(question_params)
@questioner = Questioner.new(questioner_params)
end
def new
@question = Question.new(question_params)
end
def edit
@question = find(params[:id])
raise "Question Not edited!" unless @question
end
def create
@question = Question.new(question_params)
respond_to do |wants|
if @question.save
flash[:notice] = 'You have successfully posted the questions!'
wants.html { redirect_to(root_path) }
wants.xml { render :xml => @question, :status => :created, :location => @question }
else
flash[:error] = "Please review the problems below."
wants.html { redirect_to(questions_path) }
wants.xml { render :xml => @question.errors, :status => :unprocessable_entity }
end
end
end
private
def question_params
params.require(:question).permit(:content)
end
end
答案 0 :(得分:2)
你正在使用questioner_params,但它没有在任何地方定义。此外,当您显示索引操作时,您没有设置任何参数。您只需在用户单击提交时输入参数,该提交应该转到创建操作。
def index
@question = Question.new
@questioner = Questioner.new
end
答案 1 :(得分:0)
问题出在控制器的索引操作中:
def index
@question = Question.new(question_params)
@questioner = Questioner.new(questioner_params)
end
首先,没有questioner_params
。更重要的是,索引操作没有参数 - 查看rake routes
的输出为索引操作尝试定义@questions = Question.all
而不是@question = Question.new
,因为索引用于显示所有的集合的问题。
检查这个,这是一个很好的阅读,当你刚刚开始时非常有帮助:
http://guides.rubyonrails.org/getting_started.html
答案 2 :(得分:-1)
def show在哪里?这在问题控制器中似乎非常重要。
试
def show
@question = Question.find(params [:id])
结束