param not found:在rails4强参数中

时间:2014-01-12 20:57:29

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

使用rails 4强参数时出错。

ActionController::ParameterMissing at /questions
param not found: question

我有Question modelquestions 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

3 个答案:

答案 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])
结束