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
Vous voulez dire que la forme n'apparaît pas dans la vue? Avez-vous une erreur dans le journal du serveur? – Pavan
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
Ok. Je l'ai. Ajout d'une réponse :) – Pavan