无法在rails 5中保存嵌套属性

时间:2016-12-02 14:45:40

标签: ruby-on-rails

我有两种模式:
1.Personne

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 个答案:

没有答案