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 originalclass 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