Действие new / create во вложенных маршрутах не работает - PullRequest
0 голосов
/ 03 февраля 2019

ОБНОВЛЕНИЕ К ВОПРОСУ

Мне кажется, я знаю, в чем проблема: я не передаю пользователя на вопрос.Однако я не уверен, как это сделать.Это наверняка проблема, потому что если я напишу в

view / questions / new.html.erb :

 <%= f.association :user, label: "Which user is creating it?",
:as => :hidden, :input_html => { :value => current_user.id }  %>

Это работает.Однако это не лучший способ передать пользователя.НО я не знаю, как это сделать.

КОНЕЦ ОБНОВЛЕНИЯ

ОРИГИНАЛЬНЫЙ ВОПРОС

Я создаю веб-сайт, гдеПользователь может создать проект.Каждый проект содержит несколько статей.Каждый документ можно просмотреть, ответив на несколько вопросов.

У меня есть четыре модели (Пользователь, Проект, Бумага, Вопросы).

Я застрял в действии new/create для отправки ответов настатья через simple_form_for ( view / questions / new.html.erb ).В основном, simple_form, чтобы ответить на вопросы модели Questionpaper.id, и project.id успешно пройдены, но новое создание отзыва не происходит.Я не уверен, что я делаю неправильно.

view / questions / new.html.erb

  <div class="container">
  <h4>You are reviewing the questions for paper paper:</h4>

    <div class="row ">
      <div class="col-sm-6 col-sm-offset-3">

        <%= simple_form_for [@project, @paper, @question] do |f| %>
        <%= f.input :question_1, :collection =>["N/A", "No - 0", "Partially - 0.5", "Yes - 1"], label: "Question 1" %>
        <%= f.input :question_2, :collection =>["N/A", "No - 0", "Partially - 0.5", "Yes - 1"], label: "Question 2" %>
        <%= f.input :question_3, :collection =>["N/A", "No - 0", "Partially - 0.5", "Yes - 1"], label: "Question 3" %>

        <div class="form-actions">
          <%= f.button :submit, "Send your review" %>
        </div>
      </div>
      <% end %>
    </div>
  </div>

questions_controllers.rb

  def new
    @project = Project.find(params[:project_id])
    @paper = Paper.find(params[:paper_id])
    @question = Question.new
  end

  def create
    @question = Question.new(question_params)
    @question.paper = Paper.find(params[:paper_id])
    @question.project = Project.find(params[:project_id])
    if @question.save
      redirect_to projects_path
    else
      render :new
    end

user.rb - Модель

class User < ApplicationRecord

  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable
  has_many :projects
  has_many :questions
end

project.rb - Модель

  belongs_to :user
  has_many :papers, dependent: :destroy
  has_many :questions

paper.rb - Модель

class Paper < ApplicationRecord
  belongs_to :project
  has_many :questions
  has_one_attached :paper_pdf
end

question.rb - Модель

class Question < ApplicationRecord
  belongs_to :user
  belongs_to :paper
  belongs_to :project
end

route.rb

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

рельсовые маршруты выводятся на терминал

Rails routes

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