Добавить определенные вложенные атрибуты при создании - PullRequest
0 голосов
/ 12 октября 2018

У меня есть форма с вложенными атрибутами.Все мои вложенные атрибуты работают нормально.

Но я хочу, чтобы выбор этих атрибутов был доступен пользователю для проверки (true / false) для включения в создание формы.Приведенный ниже код не работает для меня, неуверенный в том, чего мне не хватает.

Форма

<%= form_with(model: staff, local: true) do |f| %>    
  <%= f.collection_select :user_id, User.order('last_name'), :id, :full_name %>
  <%= f.collection_select :department_id, Department.all, :id, :name %>

  <%= f.check_box :sale_checkbox, {}, true, false %><%= f.label "Sales" %><br />
  <%= f.check_box :management_checkbox, {}, true, false %><%= f.label "Management" %><br />
  <%= f.check_box :summary_checkbox, {}, true, false %><%= f.label "Summary" %>
<% end %>

Так что с приведенным выше кодом, иногда продажи не 'Это не применимо, поэтому пользователь может отменить выбор, и поэтому он не будет включен в создание формы.

Контроллер

def create
 @staff = Staff.new(staff_params)
  if params[:staff][:sale_checkbox] == true
    @staff.sales.build
  end
  if params[:staff][:management_checkbox] == true
    @staff.managements.build
  end
  if params[:staff][:summary_checkbox] == true
    @staff.summaries.build
  end
end

def staff_params
  params.require(:staff).permit(:sale_checkbox, :management_checkbox, :summary_checkbox)
end

Модель

class Staff < ApplicationRecord
 attr_accessor :sale_checkbox
 attr_accessor :management_checkbox
 attr_accessor :summary_checkbox
end

1 Ответ

0 голосов
/ 12 октября 2018

Когда вы посмотрите на журнал сервера, вы увидите, что params отображается под staff хэшем, поэтому ваш код не работает.Кроме того, вы должны изменить true на "true" и build на create.Код ниже должен работать

def create
  @staff = Staff.new(staff_params)
  if params[:staff][:sale_checkbox] == "true"
    @staff.sales.create
  end
  if params[:staff][:management_checkbox] == "true"
    @staff.managements.create
  end
  if params[:staff][:summary_checkbox] == "true"
    @staff.summaries.create
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...