Я получаю эту ошибку после отправки формы: (на странице индекса)

<%= simple_form_for(@quiz, html: {class: 'form-vertical' }) do |f| %>
            <%= render 'shared/error_messages_question' %>
            <%= f.input_field :content, :rows => 3, :style => "width:80%", :placeholder => "enter your question."  %>
            <%= f.button :submit %>
<% end %>

У меня question модель:

class Question < ActiveRecord::Base
    validates :question, presence: true

    belongs_to :category
    belongs_to :questioner
end

И контролер вопросов:

class QuestionsController < ApplicationController
  def index
    @quiz = Question.new
    @questioner = Questioner.new
  end

  def new
    @quiz = Question.new(quiz_params)
  end

  def show
    @quiz = Question.find(params[:id])
  end

  def edit
    @quiz = find(params[:id])
    raise "Question Not edited!" unless @quiz
  end

  def create
    @quiz = Question.new(quiz_params)

    if @quiz.save
      flash[:success] = 'You have successfully posted the questions!'
      redirect_to questions_path
    else
      flash[:error] = "Please review the problems below."
      # render 'new'
      redirect_to questions_path
    end
  end

  private

    def quiz_params
      params.require(:question).permit(:content, :answered, :questioner_id, :category_id)
    end
end

В чем может быть проблема? на сервере рельсов у меня есть это:

Completed 500 Internal Server Error in 5ms

    NoMethodError - undefined method `question' for #<Question:0x0000000433dfc0>:
      activemodel (4.0.2) lib/active_model/attribute_methods.rb:439:in `method_missing'
0
ben 14 Янв 2014 в 01:15

1 ответ

Лучший ответ

Проблема может быть связана с этой строкой проверки.

validates :question, presence: true

Предполагается, что ваша модель вопроса имеет атрибут :question. Другими словами, проверяет наличие правильного столбца базы данных question в таблице базы данных questions.

Если это не так, исправьте либо таблицу, либо валидацию соответственно.

0
Simone Carletti 14 Янв 2014 в 01:19