Выпадающее меню не выбирает модель - PullRequest
0 голосов
/ 31 мая 2019

Я хочу создать модель задачи, в которой есть много обязательных курсов.Но когда я создаю задание, выпадающее меню не привязывает к нему какие-либо курсы.(Как и в Task.first.courses возвращает nil, а атрибут course_id также равен nil).

Контроллер задач:

before_action :authenticate_company!, only: [:create, :destroy]
def create
  @courses = Course.all
  @task = current_company.tasks.build(task_params)
  if @task.save
    flash[:success] = "Task created!"
    redirect_to @task
  else
    render 'new'
  end
end

def new
  @courses = Course.all
  @task = Task.new
end

private

  def task_params
    params.require(:task).permit(:name, :description, files: [])
  end

Модель курса:

belongs_to :task, optional: true

ЗадачаМодель:

has_many :courses

Add_task_id_to_courses Миграция:

def change
  add_column :courses, :task_id, :integer
end

Add_course_id_to_tasks Миграция:

def change
  add_column :tasks, :course_id, :integer
end

Tasks / new.html.erb:

<%= form_for(@task) do |f| %>
  <div class="field">
    <%= f.text_area :name, placeholder: "Task Name" %>
  </div>
  <div class="field">
    <%= f.text_area :description, placeholder: "Add Description" %>
  </div>
  <div class="field">
    <%= f.file_field :files, multiple: true %>
  </div>
  <div class="field">
    <%= f.collection_select :course_ids, @courses, :id, :name, {include_blank: true}, {multiple: true} %>
  </div>
  <%= f.submit "Post", class: "btn btn-primary" %>
<% end %>

1 Ответ

0 голосов
/ 31 мая 2019

Курс belongs_to :task, Задание has_many :courses.Это означает, что вам нужно только task_id в таблице курсов.Удалить course_id из таблицы задач.course_ids - это метод, сгенерированный из has_many ассоциации, а не имени столбца.

Но это не является причиной проблемы.Вы забыли добавить course_ids к разрешенным параметрам.

def task_params
  params.require(:task).permit(:name, :description, files: [], course_ids: [])
end

Не забудьте проверить журналы сервера, когда что-то идет не так.Теперь вы должны увидеть что-то вроде Unpermitted parameters: course_ids

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