NoMethodError в Ответах # новый - PullRequest
0 голосов
/ 13 марта 2019

Я получаю эту ошибку, когда иду в маршрут /questions/1/answers/new в моем проекте. Изображение ошибки

Это говорит о том, что я пытаюсь вызвать какую-то функцию, которая не существует, но я не вызываю никаких функций вообще.

Здесь new.html.erbдля этой формы:

<h1>Write answer to question: <%= @question.title %></h1>

<%= form_for @answer do |f| %>
    <%= f.label :description %>
    <%= f.text_area :description %>
    <%= f.submit %>
<% end %>

Вот answers_controller.rb:

class AnswersController < ApplicationController
def new
    @question = Question.find(params[:question_id])
    @answer = Answer.new
end

def create 
    @answer = Answer.new(answer_params)
    @answer.user = current_user
    @answer.save
end

private 
    def answer_params
        params.require(:answer).permit(:id, :description, :question_id)
    end
end

Вот routes.rb:

Rails.application.routes.draw do
  devise_for :users
  resources :questions do
    resources :answers
  end
  resources :users
  # For details on the DSL available within this file, see 
  http://guides.rubyonrails.org/routing.html
  root "pages#welcome"
end

Я застрял на этой ошибке иЯ не могу идти дальше, так что помощь будет очень признательна.

1 Ответ

1 голос
/ 13 марта 2019

Посмотрите на эту документацию , вы получите больше идей.

Для неполных форм и форм становится сложно.Обратите внимание на квадратные скобки:

<%= form_for  [@question, @answer] do |f| %>

Самое главное, если вам нужен URI, вам может понадобиться что-то вроде этого:

question_answer_path(@question, @answer)

В качестве альтернативы:

 [@question, @answer]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...