Access local variable in partial
Hi there,
I'm working on a budgeting section of a graphic designer web and I created the following model hierarchy:
I'm working on a budgeting section of a graphic designer web and I created the following model hierarchy:
general_budget.rb
class GeneralBudget < ActiveRecord::Base has_many :budgets accepts_nested_attributes_for :budgets, reject_if: :all_blank, allow_destroy: true end
budget.rb
class Budget < ActiveRecord::Base belongs_to :sheet_type belongs_to :general_budget ... end
sheet_type.rb (A4 photography 120 grs.)
class SheetType < ActiveRecord::Base belongs_to :sheet_size end
sheet_size.rb (A5, A4, ...)
class SheetSize < ActiveRecord::Base has_many :sheet_types end
And I'm using cocoon gem to create multiple budgets while creating a general budget.
I finished with the section where the designer budget, the problem come up when he wants to edit an specific budget. new.html.erb and edit.html.erb are pretty simple
general_budgets/new.html.erb
<link href="https://fonts.googleapis.com/css?family=Roboto+Slab:300,400,700" rel="stylesheet"> <div> <%= image_tag "logo.gif", class: "logo" %> <%= render 'form' %> <%= link_to 'Atras', url_for(:back) %> </div>
general_budgets/edit.html.erb
<h1>Editando Presupuesto General</h1> <%= render 'form' %> <%= link_to 'Mostrar', @general_budget %> | <%= link_to 'Atras', url_for(:back) %>
general_budgets/_form.html.erb
<%= form_for(@general_budget) do |f| %>
<% if @general_budget.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@general_budget.errors.count, "error") %> prohibited this general_budget from being saved:</h2>
<ul>
<% @general_budget.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="budgets">
<%= f.fields_for :budgets do |budget| %>
<%= render 'budget_fields', { f: budget, size: budget.object.sheet_type.sheet_size.id } %>
<% end %>
<div class="links agregar_presupuesto">
<%= link_to_add_association f, :budgets do%>
<i class=" icon-plus-circled"> Agregar Presu </i>
<% end %>
</div>
</div>
<div id="general_data">
<!-- GENERAL BUDGET INPUT FIELDS -->
<div class="actions crearPresu">
<%= f.submit 'Finalizar Presu' %>
</div>
</div>
<% end %>general_budgets/_budget_fields.html.erb
<div class="nested-fields miniBudget">
...
<div class="papel">
<%= local_assigns[:size] %> <----------- Here the value shows up with no problem
<div class="field papelSize">
<%= f.select :sheet_type_id, SheetSize.find(local_assigns[:size]).sheet_types.collect { |p| [ p.full_name, p.id ] }, { prompt: "Tipo papel" }, { class: 'sheet_type' }%>
^
|
Here seems to have nil value
</div>
</div>
...
</div>I get the possible sheet types this way ( SheetSize.find(local_assigns[:size]).sheet_types ) because I need to show sheet types related to the the designer have chosen previously (i.e. If he chose A4, I want sheet type select display A4 sheet types)
The error in the browser is
Couldn't find SheetSize with 'id'=
Extracted source (around line #43):
| 41
| 42 <div class="field papelSize">
| 43 <%= f.select :sheet_type_id, SheetSize.find(local_assigns[:size].to_s).sheet_types.collect { |p| [ p.full_name, p.id ] }, { prompt: "Tipo papel" }, { class: 'sheet_type' }%>
| 44 </div>
| 45
| 46
<div class="field">I've been googling for a while and can't get any clue.
Any idea what's going on?
Thanks.