Две записи одной модели с разными значениями - PullRequest
0 голосов
/ 14 января 2019

Привет, ребята. В настоящее время я разрабатываю часть в своем приложении, где изобретатель может заполнить форму с прошлым опытом работы и образованием. Я использую вложенные атрибуты, чтобы создать запись для опыта работы и образования, которая работает отлично. Но я хочу иметь возможность добавить более одного опыта работы и более одного образования в одной форме

Я пытался использовать вложенные атрибуты и пытался создать 2 записи при отправке формы, записи создаются, но имеют одинаковые значения для работодателя

user.rb

   has_many :work_exps
   has_many :educations   
   accepts_nested_attributes_for :work_exps
   accepts_nested_attributes_for :educations

experience.html.erb

 <%= form_for :user, url: 'experience'  do  |f|%>
   <h3>work experience:</h3>
   <%= fields_for :work_exps do |u| %>
     <%= u.label :employer %><br />
     <%= u.text_field :employer %><br>
     <%= u.label :employer %><br />
     <%= u.text_field :employer %>
  <% end %>
  <%= fields_for :educations do |u| %>
    <%= u.label :school %><br />
    <%= u.text_field :school %>
  <% end %>

маршруты

 post 'care_giver_steps/experience', to: 'care_giver_steps#experience'                       

Контроллер

def new
  @user = current_user
  @user.work_exps.build 
  @user.educations.build
  render_wizard
end

def experience
  @user = current_user 
  2.times{@user.work_exps.create(sanitize_work)}
  @user.educations.create(sanitize_education) 
  redirect_to team_root_path       
end


private 
  def sanitize_work
     params.require(:work_exps).permit(:employer,:title)
  end
  def sanitize_education
     params.require(:educations).permit(:major,:school)
  end

1 Ответ

0 голосов
/ 14 января 2019
    def new
      @user = current_user
      2.times{@user.work_exps.build}
      @user.educations.build
      render_wizard
    end

    def experience
      @user = current_user 
      @user.update(sanitize_params) 
      redirect_to team_root_path       
    end
private 
  def sanitize_params
     params.require(:user).permit(work_exps_attributes: [:employer,:title], educations_attributes: [:major,:school])
  end

routes.rb

 post 'care_giver_steps/experience', to: 'care_giver_steps#experience', as: :care_giver_steps_experience  

experince.html.erb

 <%= form_for :user, url: care_giver_steps_experience_path  do  |f|%>
   <h3>work experience:</h3>
   <%= fields_for :work_exps do |u| %>
     <%= u.label :employer %><br />
     <%= u.text_field :employer %><br>
     <%= u.label :employer %><br />
     <%= u.text_field :employer %>
  <% end %>
  <%= fields_for :educations do |u| %>
    <%= u.label :school %><br />
    <%= u.text_field :school %>
  <% end %>

Ссылка - Вложенные атрибуты Ruby on Rails

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