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
class Idea < ActiveRecord::Base belongs_to :project accepts_nested_attributes_for :project mount_uploader :picture, PictureUploader validates :name, presence: true, allow_blank: false
end
El form
Código ruby:
Ver original
<%= form_for(@idea) do |f| %> <% if @idea.errors.any? %> <div id="error_explanation"> <h2><%= pluralize(@idea.errors.count, "error") %> prohibited this idea from being saved:</h2> <ul> <% @idea.errors.full_messages.each do |message| %> <li><%= message %></li> <% end %> </ul> </div> <% end %> <div class="field"> <%= f.label :name %><br> <%= f.text_field :name %> </div> <div class="field"> <%= f.label :description %><br> <%= f.text_area :description %> </div> <div class="field"> <%= f.label :picture %><br> <%= f.file_field :picture %> </div> <%= f.fields_for :project do |f| %> <div class="field"> <%= f.label :project %><br /> <%= f.number_field :project_id %> </div> <% end -%> <div class="actions"> <%= f.submit %> </div> <% end %>
Y el controller > ideas_controller.rb con esta parte editada
Código f:
Ver original
# GET /ideas/new def new @idea = Idea.new @idea.project_id respond_to do |format| format.html # new.html.erb format.json { render json: @idea } end end