2017-06-20 2 views
0

J'ai une citation de modèle qui has_many employés et employés appartient à citation. J'essaye de construire un formulaire simple_form_for imbriqué pour mettre à jour ces deux modèles dans ma vue new_quote, en dépit d'essayer beaucoup de variations de syntaxe je ne peux pas voir ce que je fais mal. Le simple_fields_for contenu ne rend même pas dans le navigateur, tout le reste fait? Toute aide sur ce que je fais mal serait grandement apprecited:Qu'est-ce qui empêche l'affichage des champs imbriqués dans cette simple_form_for?

quotes_controller.rb

class QuotesController < ApplicationController 
    before_action :authenticate_user!, only: [ :new, :create, :edit, :update, :destroy ] 

    def new 
    @quote = Quote.new 
    @quote.employees.build 

    respond_to do |format| 
     format.html 
     format.xlsx { response.headers['Content-Disposition'] = 'attachment; filename="empee_data.xlsx"' } 
    end 

    def quote_params 
    params.require(:quote).permit(:gla, :prev_cover, :co_name, :co_number, :postcode, :industry, :lives_overseas, 
            :scheme_start_date, :payment_frequency, :commission_level) 
    end 
end 

new.html.erb

<div class='container'> 
    <div class='row'> 
     <h1>Complete the below to get a quote</h1> 
     <%= render :partial => "new_quote"%> 
    </div> 
</div> 

_new_quote.html.erb

  <%= simple_form_for @quote do |f| %> 
     <div class='form-group col-md-6'> 
      <%= f.input :gla, as: :boolean, label: "GLA" %> 
      <%= f.input :prev_cover, as: :radio_buttons, collection: [['Yes', true], 
         ['No', false]], readonly: nil, label: "Previous cover" %> 
      <%= f.input :co_name, label: "Company name" %> 
      <%= f.input :co_number, label: "Company number" %> 
      <%= f.input :postcode %> 
     </div> 
     <div class='form-group col-md-6'> 
      <%= f.input :lives_overseas, as: :radio_buttons, collection: [['Yes', true], 
         ['No', false]], readonly: nil %> 
      <%= f.input :industry, collection: Quote.industries.map { |k,v| [ k.humanize, k ] } %> 
      <%= f.input :scheme_start_date %> 
      <%= f.input :payment_frequency, collection: Quote.payment_frequencies.map { |k,v| [ k.humanize, k ] } %> 
      <%= f.input :commission_level %> 

      <% f.simple_fields_for :employees do |builder| %> 
       <%= builder.input :first_name, label: "First name" %> 
       <%= builder.input :last_name, label: "Last name" %> 
       <%= builder.input :email, label: "Email" %> 
       <%= builder.input :gender, collection: Employee.genders.map { |k,v| [ k.humanize, k ] } %> 
       <%= builder.input :date_of_birth %> 
       <%= builder.input :salary %> 
      <% end %> 

      <%= link_to 'Download as .xlsx', new_quote_path(format: :xlsx) %> 
     </div> 
      <%= f.submit "Get quote", class: 'btn btn-primary' %> 
     <% end %> 

quote.rb

class Quote < ApplicationRecord 
    belongs_to :user 
    has_many :employees, inverse_of: :quote 
    accepts_nested_attributes_for :employees 
end 

employees.rb

class Employee < ApplicationRecord 
    belongs_to :quote 
end 
+0

Vous voulez dire que la forme n'apparaît pas dans la vue? Avez-vous une erreur dans le journal du serveur? – Pavan

+0

Je veux dire que l'élément fields_for du formulaire n'apparaît pas, le reste du formulaire le fait, comme si les fields_ for block n'existaient pas du tout! Des idées? – jbk

+0

Ok. Je l'ai. Ajout d'une réponse :) – Pavan

Répondre

1

Je veux dire que l'élément fields_for de la forme ne se présente pas, le reste du formulaire ne, comme si le fields_ pour le bloc n'existait pas tous !? Des idées?

Ceci est dû à cette ligne

<% f.simple_fields_for :employees do |builder| %> 

qui devrait être

<%= f.simple_fields_for :employees do |builder| %> 

Il vous manque =

+1

OMG, ha, ha, oh mon dieu, comme c'est fou, désolé et merci. Je suppose que je vais laisser ceci ici comme un contenu potentiellement utile pour les autres. – jbk