ОБНОВЛЕНИЕ К ВОПРОСУ
Мне кажется, я знаю, в чем проблема: я не передаю пользователя на вопрос.Однако я не уверен, как это сделать.Это наверняка проблема, потому что если я напишу в
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, чтобы ответить на вопросы модели Question
.И paper.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
рельсовые маршруты выводятся на терминал
