2017-06-20 13 views
0

我有一个模型报价has_many员工和雇员belongs_to报价。我试图构建一个嵌套的simple_form_for表单,以在我的new_quote视图中更新这两个模型,尽管尝试了很多语法变体,我看不出我做错了什么。 simple_fields_for内容甚至不会在浏览器中呈现,其他所有内容都会呈现?在我做错了就会大大apprecited任何帮助:这个simple_form_for中的嵌套fields_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

你的意思是形式没有显示在视图中了吗?你在服务器日志中有任何错误吗? – Pavan

+0

我的意思是表单的fields_for元素没有显示出来,表单的其余部分确实如同fields_ for块根本不存在!?有任何想法吗? – jbk

+0

好的。我知道了。添加答案:) – Pavan

回答

1

我的意思是形式的fields_for元素不露面, 其他形式的呢,仿佛块fields_没有在存在全部都是! !有任何想法吗?

这是因为该行

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

这应该是

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

你缺少=

+1

OMG,哈哈,哦,亲爱的,多么愚蠢,抱歉,谢谢。猜猜我会留下这里作为其他人可能有用的内容。 – jbk