Я хочу создать модель отправки, в которой пользователь может создавать представления для задач. Каждое представление должно иметь user_id и task_id. Когда я пытаюсь создать представление, rails возвращает ошибку, в которой говорится, что задача должна существовать.
модель задачи:
has_many :submissions
модель пользователя:
has_many :submissions
модель представления:
belongs_to :user
belongs_to :task
маршруты:
resources :tasks do
resources :submissions
end
контроллер представлений:
def create
@task = Task.find(params[:task_id])
@submission = current_user.submissions.build(submission_params)
if @submission.save
flash[:success] = "Submitted!"
redirect_to task_submission_path(@task, @submission)
else
puts @submission.errors.full_messages
render 'new'
end
end
def new
@task = Task.find(params[:task_id])
@submission = Submission.new
end
def show
@submission = Submission.find(params[:id])
end
private
def submission_params
params.require(:submission).permit(:description)
end
задачи / show.html.erb:
<% if user_signed_in? %>
<%= link_to "Submit", new_task_submission_path(@task) %>
<% end %>
материалы / new.html.erb:
<h2>Submit</h2>
<%= form_for [:task, @submission] do |f| %>
<div><%= hidden_field_tag :task_id, @task.id %></div>
<div class="field">
<%= f.text_area :description, placeholder: "File description" %>
</div>
<%= f.submit "Submit", class: "btn btn-primary" %>
<% end %>
миграция представления:
def change
create_table :submissions do |t|
t.string :description
t.integer :user_id
t.integer :task_id
t.timestamps
end
end