У меня есть модель в моем рельсе, которую has_many answers
. При попытке сохранить как sale_qualifier
, так и answer
я получаю ошибку Answers sale_qualifier can't be blank
, и я не могу решить, в чем проблема, поскольку у меня эти вложенные атрибуты работают в других формах приложения.Вложенная модель поля, не сохраняющая родительскую ассоциацию в Rails
SaleQualifier
показан на SalesOpportunity
страницы, поэтому я сначала определить это в действии: SalesOpportunity show
def show
@sales_opportunity = SalesOpportunity.includes(:company, :user, :timeline_events, :sale_contacts, :swots, :sale_competitors).find(params[:id])
@sale_qualifier = SaleQualifier.new(sales_opportunity_id: params[@sales_opportunity.id])
@answer = @sale_qualifier.answers.build
end
Как вы можете видеть, что я строй ассоциации в шоу-контроллере, который должен затем обновить через действие SaleQualifier create
. В контроллере SaleQualifier я установил следующее:
def sale_qualifier_params
params.require(:sale_qualifier).permit(:question_id, :answer_id, :next_question_id, :answered, :sales_opportunity_id, answers_attributes: [:answer_text, :sale_qualifier_id])
end
Мой Продажа Классификатор код:
class SaleQualifier < ActiveRecord::Base
has_many :answers, :inverse_of => :sale_qualifier
accepts_nested_attributes_for :answers
belongs_to :sales_opportunity
validates :sales_opportunity_id, presence: true
end
Мой Answer.rb:
class Answer < ActiveRecord::Base
validates :answer_text, presence: true
belongs_to :sale_qualifier
validates :sale_qualifier_id, presence: true
end
мой взгляд форма:
<div class="panel panel-default">
<%= form_for(@sale_qualifier) do |f| %>
<% if @sale_qualifier.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@sale_qualifier.errors.count, "error") %> prohibited this answer from being saved:</h2>
<ul>
<% @sale_qualifier.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="panel-body">
<div class="col-sm-6">
<h2><%= @question.question_text %></h2>
</div>
<div class="col-sm-6">
<div class="form-group">
<%= f.hidden_field :sales_opportunity_id, :value => @sales_opportunity.id %>
</div>
<%= f.fields_for :answers do |answer| %>
<%= answer.text_area :answer_text, :placeholder => "Enter your answer" %>
<% end %>
<div class="actions">
<%= f.submit "Submit", class: "btn btn-large btn-success"%>
</div>
<% end %>
</div>
</div>
</div>
Все поля отображаются правильно на v МЭН. Это файл журнала с помощью кнопки мыши отправить:
Started POST "/sale_qualifiers" for 127.0.0.1 at 2016-01-13 13:12:57 +0800
Processing by SaleQualifiersController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"0NdiFqK9O2fqh7TvDamrUL4jeQ6otcoQGhBZX9DlaSg=", "sale_qualifier"=>{"sales_opportunity_id"=>"77", "answers_attributes"=>{"0"=>{"answer_text"=>"An Answer"}}}, "commit"=>"Submit"}
Возвращается ошибка «Ответы sale_qualifier не может быть пустым».
Я уверен, что есть некоторая прямая ошибка, которую я не вижу в своем коде, если кто-нибудь может мне помочь. Я был бы признателен.