2016-12-02 2 views
0

У меня есть две модели:
1.Personne
Невозможно сохранить вложенные атрибуты в рельсах 5

class Personne < ApplicationRecord 
    has_one :proprietaire 

    accepts_nested_attributes_for :proprietaire 
    validates :nom, :prenom, :tel, :email, 
      presence: true 
end 

2 Proprietaire

class Proprietaire < ApplicationRecord 
    belongs_to :personne 

    validates :commune_id, :quartier, 
      presence: true 
end 

контроллер является:

class PersonneController < ApplicationController 
    def display_proprietaires 
    @proprietaires = Personne.all 
    #@proprietaires = @proprietaires.proprietaire 
    end 

    def new_proprietaire 
    @provinces = Province.where(:parentId => nil) 
    @communes = Province.where.not(:parentId => nil) 
    @personne = Personne.new 
    @personne.build_proprietaire 
    end 

    def create_proprietaire 
    @proprietaire = Personne.new(proprietaire_params) 
    @proprietaire.build_proprietaire 
    respond_to do |format| 
     if @proprietaire.save 
     flash[:notice] = "succes" 
     flash[:type] = "success" 
     format.html { redirect_to action: :display_proprietaires } 
     else 
     flash[:notice] = "fail" 
     flash[:type] = "warning" 
     format.html { redirect_to action: :display_proprietaires } 
     end 
    end 
    end 

    def proprietaire_params 
    params.require(:personne).permit(:nom, :prenom, :tel, :email, proprietaire_attributes: [:id, :commune_id, :quartier]).except(:province, :commit) 
    end 
end 

Зрения:

<%= form_for @personne, :url => url_for(:controller=>'personne', :action=>'create_proprietaire') do |f| %> 
    <div class="row"> 
    <div class="col-xs-6 col-sm-6 col-lg-6"> 
     <div class="form-group"> 
      <%= f.label(:nom, 'Nom : ') %> 
      <%= f.text_field :nom, {class: "form-control", placeholder: 'Nom'} %> 
     </div> 
     <div class="form-group"> 
      <%= f.label(:prenom, 'Prenom : ')%> 
      <%= f.text_field :prenom, {class: "form-control", placeholder: "Prenom"} %> 
     </div> 
     <div class="form-group"> 
      <%= f.label(:tel, 'Telephone : ')%> 
      <%= f.text_field :tel, {class: "form-control", placeholder: "Telephone"} %> 
     </div> 
     <div class="form-group"> 
      <%= f.label(:email, 'Email : ') %> 
      <%= f.text_field :email, {class: "form-control", placeholder: "Email"} %> 
     </div> 
     <div class="form-group"> 
      <%= label_tag(:province, 'Province : ') %> 
      <%= select_tag(:province, options_for_select(@provinces.collect{|value| [value.denomination, value.id]}), {class: "form-control", id: "province", remote: true}) %> 
     </div> 
     <%= f.fields_for :proprietaire do |proprio| %> 
      <div class="form-group"> 
       <%= proprio.label(:commune_id, 'Commune : ') %> 
       <%= proprio.select :commune_id, options_for_select(@communes.collect{|value| [value.denomination, value.id]}),{}, {class: "form-control", id: "commune"} %> 
      </div> 
      <div class="form-group"> 
       <%= proprio.label :quartier, "Quartier" %> 
       <%= proprio.text_field :quartier, {class: "form-control", placeholder: "Quartier"} %> 
      </div> 
     <% end %> 
     <%= f.submit "Enregistre", {class: 'btn btn-info'} %> 
<% end %> 

Маршруты:

resources :personne do 
    collection do 
     post :create_proprietaire 
     get :display_proprietaires 
     get :new_proprietaire 
    end 
    end 

Я новичок в RoR, когда я пытаюсь сохранить ничего не происходит, я получаю это: Error

Может ли кто-нибудь помочь мне в этом. Спасибо!

+0

У вас нет установленной или завершенной связи. У вас еще нет установленной связи – AndreyS

+0

@ AndreyS Многое, это была необходимая ассоциация, которая не была установлена. Я нашел решение здесь http://blog.bigbinary.com/2016/02/15/rails-5-makes-belong-to-association-required-by-default.html – hakif

+0

OK Я отправлю его в качестве ответа так – AndreyS

ответ

0

У вас установлена ​​ваша ассоциация, но она отсутствует. Ассоциации установлены по умолчанию в рельсах 5, поэтому, если вы хотите сохранить один пуст, вам нужно установить опцию: true для вашей ассоциации в модели

Смежные вопросы