Hi Sergio,
Doh.. I eventually figured out that the conf.actions needs to include subform!
Hopefully this will help someone in the future.
class OdcsController < ApplicationController
before_action :check_resource_permissions
active_scaffold :"odc" do |conf|
conf.label = '8. MISCELANEOUS PURCHASES AND OTHER DIRECT COSTS (ODCS)'
conf.subform.columns =[:line_item_number, :description, :qty,
:justification ]
conf.columns = [:line_item_number, :description, :qty, :justification,
:sub_tdn ]
conf.actions = [:delete, :list, :show, :search, :export, :subform]
conf.export.default_file_format = 'xlsx' # or 'csv'
end
But I am getting a new error when I try to add Another child record, for
example with “Create Another Odc”
[cid:[email protected]]
ActionView::Template::Error (undefined method `name' for nil:NilClass):
1: <%
2: subform_id = sub_form_list_id(:association => @column.name, :id =>
@parent_record.id || generated_id(@parent_record) || 99999999999)
3: associated_form = render :partial => "form_association_record", :object
=> @record, :locals => {:scope => @scope, :parent_record => @parent_record,
:column => @column, :locked => @record.new_record? &&
@column.association.singular?}
4: options = {:singular => false}
5: if @column.association.singular?
active_scaffold (ccfc9d71d522)
app/views/active_scaffold_overrides/edit_associated.js.erb:2
actionview (6.1.7.3) lib/action_view/base.rb:247:in `public_send'
actionview (6.1.7.3) lib/action_view/base.rb:247:in `_run'
Not sure if this is an AS bug? Or a problem somewhere in my code?
Thanks
Dennis
From: Dennis Bulgatz <[email protected]>
Date: Saturday, April 1, 2023 at 11:08 PM
To: Sergio Cambra <[email protected]>, ActiveScaffold : Ruby on Rails Gem
<[email protected]>
Subject: Re: Created a show helper, lost the association create
Hi Sergio,
Thanks again. I did as you suggested and created an override for
column_renders_as. For some reason, I get “Subform is not enabled” when I
force subform.
What would a controller config look like to enable/disable the subform? What
is the method checking for the subform being enabled?
def column_renders_as(column)
puts "YES, we are here! #{column.name.inspect}"
if column.name == :travels
logger.debug "@@@@@@@@@"
logger.debug "column.association.nil? : #{column.association.nil?}"
logger.debug "column.form_ui : #{column.form_ui}"
logger.debug
"!active_scaffold_config_for(column.association.klass).actions.include?(:subform)
:
#{!active_scaffold_config_for(column.association.klass).actions.include?(:subform)}"
logger.debug "@@@@@@@@@"
return :subform
end
if column.is_a? ActiveScaffold::DataStructures::ActionColumns
return :subsection
elsif column.active_record_class.locking_column.to_s == column.name.to_s or
column.form_ui == :hidden
return :hidden
elsif column.association.nil? or column.form_ui or
!active_scaffold_config_for(column.association.klass).actions.include?(:subform)
return :field
else
return :subform
end
end
Rendered
/Users/dbulgatz/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/bundler/gems/active_scaffold-ccfc9d71d522/app/views/active_scaffold_overrides/_form_messages.html.erb
(Duration: 0.4ms | Allocations: 147)
YES, we are here! :travels
@@@@@@@@@
column.association.nil? : false
column.form_ui :
!active_scaffold_config_for(column.association.klass).actions.include?(:subform)
: true
@@@@@@@@@
Rendered
/Users/dbulgatz/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/bundler/gems/active_scaffold-ccfc9d71d522/app/views/active_scaffold_overrides/_form.html.erb
(Duration: 32.8ms | Allocations: 9586)
Rendered
/Users/dbulgatz/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/bundler/gems/active_scaffold-ccfc9d71d522/app/views/active_scaffold_overrides/_base_form.html.erb
(Duration: 37.9ms | Allocations: 14980)
Rendered
/Users/dbulgatz/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/bundler/gems/active_scaffold-ccfc9d71d522/app/views/active_scaffold_overrides/_update_form.html.erb
(Duration: 38.3ms | Allocations: 15249)
Completed 500 Internal Server Error in 84ms (ActiveRecord: 12.1ms |
Allocations: 41633)
ActionView::Template::Error (Subform is not enabled. Please enable it or remove
any references in your configuration (e.g. config.subform.columns = [...]).):
19: <%= render :partial => 'form', :locals => { :columns => column,
:subsection_id => subsection_id, :form_action => form_action, :scope => scope }
%>
20: </li>
21: <% end %>
22: <% elsif renders_as == :subform and authorized -%>
23: <%= content_tag :li, active_scaffold_subform_attributes(column,
column_css_class) do %>
24: <%= render_column(column, @record, renders_as, scope) %>
25: <% end %>
active_scaffold (ccfc9d71d522) lib/active_scaffold/config/core.rb:250:in `[]'
Here is my controller:
class SubTdnsController < ApplicationController
active_scaffold :"sub_tdn" do |conf|
conf.columns = [:title, :ordinal, :work_lead,
:pop_begin, :pop_end,
:introduction, :description_of_work,
:software_classification,
:environment_impact, :data_sensitivity,
:special_requirements,
:travels, :odcs, :gfis, :deliverables, :data_rights_notice ]
conf.create.columns = [
:travels, :odcs, :gfis, :deliverables,
:title, :ordinal, :work_lead,
:pop_begin, :pop_end,
:introduction, :description_of_work, :software_classification,
:environment_impact, :data_sensitivity, :special_requirements,
:data_rights_notice ]
conf.update.columns = [
:travels, :odcs, :gfis, :deliverables,
:title, :ordinal, :work_lead,
:pop_begin, :pop_end,
:introduction, :description_of_work, :software_classification,
:environment_impact, :data_sensitivity, :special_requirements,
:data_rights_notice ]
conf.list.columns = :sub_tdn_number, :title
conf.columns[:introduction].label = "1. Introduction"
conf.columns[:description_of_work].label = "2. Description of Work"
conf.columns[:software_classification].label = "3. Software Classification"
conf.columns[:environment_impact].label = "4. Environment Impact"
conf.columns[:data_sensitivity].label = "5. Data Sensitivity"
conf.columns[:special_requirements].label = "6. Special Requirements"
conf.columns[:travels].label = "7. Travel Requirements"
conf.columns[:odcs].label = "8. Other Direct Costs"
conf.columns[:gfis].label = "9. Government Furnished Items"
conf.columns[:deliverables].label= "10. Deliverables/Milestones"
conf.columns[:data_rights_notice].label= "11. Data Rights Notice"
conf.columns[:introduction].form_ui = :text_editor
conf.columns[:description_of_work].form_ui = :text_editor
conf.columns[:software_classification].form_ui = :text_editor
conf.columns[:environment_impact].form_ui = :text_editor
conf.columns[:data_sensitivity].form_ui = :text_editor
conf.columns[:special_requirements].form_ui = :text_editor
conf.columns[:data_rights_notice].form_ui = :text_editor
conf.action_links.add 'get_pdf', :type => :member, controller: :sub_tdns,
action: :show, page: true, :parameters => {format: :pdf}
#conf.show.link.page = true
end
From: Sergio Cambra <[email protected]>
Date: Friday, March 31, 2023 at 9:06 AM
To: ActiveScaffold : Ruby on Rails Gem <[email protected]>
Cc: Dennis Bulgatz <[email protected]>
Subject: Re: Created a show helper, lost the association create
Hi Dennis
There is a helper method, column_renders_as, which should return :subform for
column travels. It would return :field if subform action has been excluded from
travels controller, form_ui has been set for the column, or a helper
_form_column has been defined for the column. Defining
sub_tdn_travels_show_column shouldn't affect.
Was sub_tdn_travels_show_column being called in create/update form? Or was it
displaying a list of checkboxes instead of subform?
What method is called with the super line? Super would call another method
with the same name, and ActiveScaffold doesn't define
sub_tdn_travels_form_column, so you must have defined that method somewhere
else.
Regards
El jueves, 30 de marzo de 2023 0:32:39 (CEST) Dennis Bulgatz escribió:
> Hi Sergio,
>
> i have a resource that a column with a has_many association.
>
> For the "show" action I have a column helper that renders the children as a
> table.
>
> def sub_tdn_travels_*show_column*(record, input_name)
> display_standard_table(
> [
> { :name => 'line_item_number', :display_name => 'Item' },
> { :name => 'purpose', :display_name => 'Purpose' },
> { :name => 'number_of_travelers', :display_name => 'Traveler(s)' },
> { :name => 'number_of_nights', :display_name => 'Night(s)' },
> { :name => 'number_of_days', :display_name => 'Days(s)'},
> { :name => 'from_date', :display_name => 'From'},
> { :name => 'to_date', :display_name => 'To'},
> { :name => 'destination', :display_name => 'Destination'}
> ], record.travels)
> end
>
> This has stopped the create/update actions on the parent from showing the
> AS form/partial that can create new child records.
>
> Not sure what is going on, but can i restore partial with a call in the
> helper method:
>
> def sub_tdn_travels_*form_column*(record, input_name)
> super(record,input_name) #THIS IS NOT RIGHT, but the idea is to use
> default partial
> end
>
> Thanks!
>
> Dennis
--
You received this message because you are subscribed to the Google Groups
"ActiveScaffold : Ruby on Rails Gem" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/activescaffold/MN0PR19MB58253B1F954F659AB5C46286F9929%40MN0PR19MB5825.namprd19.prod.outlook.com.