Ich habe eine verschachtelte simple_form, und ich verwende den Edelstein Kokon. Ich habe ein Challenge-Modell, das dies in challenge.rb hat: accepts_nested_attributes_for :prizes
Und eine Herausforderung has_many
Preise. Beim Abschicken des Formulars erhalte ich den Fehler:Verschachtelte Formulare mit Kokon: Berechtigungsproblem
Auch wenn ich es in meinen starken params autorisiert habe. Ich habe Kokon schon vorher benutzt und es geschafft, es funktioniert, ich kann das Problem hier nicht finden und ich ziehe mir die Haare aus.
In meinem challenges_controller.rb:
def create
@challenge = Challenge.create(challenge_params)
@challenge.user = current_user
authorize @challenge
if params["challenge"]["prizes_attributes"]
for k,v in params["challenge"]["prizes_attributes"]
@prize = Prize.create
@prize.challenge = @challenge
@prize.title = v.values[0].values[0]
@prize.save
end
end
if @challenge.save
redirect_to challenge_path(@challenge)
else
render :new
end
end
def challenge_params
params.require(:challenge).permit(:title,
:banner,
:user,
:start_date,
:end_date,
:tagline,
:slug,
:rules,
:category_id,
:organization,
prizes_attributes: [:id, :title])
end
Auch in meiner Form eine Herausforderung zu schaffen:
<%= simple_form_for @challenge do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :title, :label => "Titre" %>
<%= f.input :banner, :label => "Bannière", as: :attachinary %>
<%= f.input :tagline, :label => "Tagline" %>
<%= f.input :organization, :collection => @organizations,:label => "Organization", :include_blank => true%>
<%= f.input :rules, :label => "Lien vers le règlement" %>
<%= f.input :start_date, as: :string, input_html: {type: :date}, :label => "Date de début" %>
<%= f.input :end_date, as: :string, input_html: {type: :date}, :label => "Date de fin" %>
<%= f.input :category_id, :collection => @ancestors,:label => "Catégorie", :include_blank => true%>
<%= f.simple_fields_for :prizes do |p| %>
<%= render 'prize_fields', f: p %>
<% end %>
<%= link_to_add_association 'Ajouter un prix', f, :prizes %>
</div>
<div class="form-actions text-center">
<%= f.button :submit, "Soumettre", :class => "btn btn-primary" %>
</div>
<% end %>
Und in meinem prizes_fields Teil:
<li>
<div class='row'>
<%= f.fields_for :prizes do |p| %>
<div class='col-xs-12 col-md-6'>
<div class="materiel-wrapper">
<%= p.text_field :title, class:"form-control", placeholder:"Titre" %>
</div>
</div>
<% end %>
</div>
</li>
Hat jemand sehen wo habe ich einen Fehler gemacht?
Vielen Dank für Ihre Zeit und helfen
Vielen Dank für Ihre Antwort! Wenn ich jedoch die f.simple_fields_for: Preise lösche | p | im partiellen habe ich "undefined method text_field für nil" –
@GrahamSlick Das liegt daran, dass Sie 'p' aufrufen, aber Sie haben es an das Partielle als' f' übergeben ('<% = render 'price_fields', f: p %> '). Ändern Sie Ihre Partial zu 'f.text_field' – Matt
Vielen Dank, es hat funktioniert! –