Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/05/2014, 08:43
sanzito
 
Fecha de Ingreso: diciembre-2006
Mensajes: 9
Antigüedad: 18 años
Puntos: 1
Problema con accepts_nested_attributes_for en un form Me gustaEditar alertas 8 clics

Hola hola, a ver si me pueden echar una mano

Problema: Estoy creando un form en el que quiero indicar a la hora de crear una idea, que pertenece a un determinado Project, utilizando el project_id de este. He estado echando un vistazo y todo lo que he encontrado ha sido utilizar el accepts_nested_attributes_for incluido en mi modelo de Idea para que me acepte elementos del otro modelo Project. Puedo crear nuevos items de Idea especificando su project_id si lo hago a través de la consola, pero no a través de la app en sí.

Lo que tengo hasta ahora es:

El modelo Idea con el accept_nested_attributes de Project
App > Models > Idea.rb

Código ruby:
Ver original
  1. class Idea < ActiveRecord::Base
  2.  
  3. belongs_to :project
  4.  
  5. accepts_nested_attributes_for :project
  6.  
  7. mount_uploader :picture, PictureUploader
  8. validates :name, presence: true, allow_blank: false

end

El form
Código ruby:
Ver original
  1. <%= form_for(@idea) do |f| %>
  2. <% if @idea.errors.any? %>
  3. <div id="error_explanation">
  4.       <h2><%= pluralize(@idea.errors.count, "error") %> prohibited this idea from being saved:</h2>
  5.  
  6.       <ul>
  7.       <% @idea.errors.full_messages.each do |message| %>
  8.       <li><%= message %></li>
  9.       <% end %>
  10.       </ul>
  11. </div>
  12. <% end %>
  13.  
  14. <div class="field">
  15. <%= f.label :name %><br>
  16. <%= f.text_field :name %>
  17. </div>
  18. <div class="field">
  19. <%= f.label :description %><br>
  20. <%= f.text_area :description %>
  21. </div>
  22. <div class="field">
  23. <%= f.label :picture %><br>
  24. <%= f.file_field :picture %>
  25. </div>
  26. <%= f.fields_for :project do |f| %>
  27.       <div class="field">
  28.       <%= f.label :project %><br />
  29.       <%= f.number_field :project_id %>
  30.       </div>
  31. <% end -%>
  32. <div class="actions">
  33. <%= f.submit %>
  34. </div>
  35. <% end %>

Y el controller > ideas_controller.rb con esta parte editada

Código f:
Ver original
  1. # GET /ideas/new
  2. def new
  3. @idea = Idea.new
  4. @idea.project_id
  5.  
  6. respond_to do |format|
  7. format.html # new.html.erb
  8. format.json { render json: @idea }
  9. end
  10. end