On Viernes, 27 de Noviembre de 2009 11:02:02 EBIHARA, Yuichiro escribió: > Hi, > > I'm meeting a problem that is almost the same as Issue 691. > http://code.google.com/p/activescaffold/issues/detail?id=691 > > +++ > ... > F, [2009-11-27T18:23:34.281000 #4596] FATAL -- : > ActionView::TemplateError (You have a nil object when you didn't expect it! > The error occurred while evaluating nil.status) on line #7 of > vendor/plugins/active_scaffold/frontends/default/views/_form_attribute.html >.erb: 4: <label for="<%= active_scaffold_input_options(column, > scope)[:id] %>"><%= column.label %></label> > 5: </dt> > 6: <dd> > 7: <%= active_scaffold_input_for column, scope %> > 8: <% if column.description -%> > 9: <span class="description"><%= column.description %></span> > 10: <% end -%> > > app/models/topic_item.rb:15:in `page_status' > > vendor/plugins/active_scaffold/frontends/default/views/_form_attribute.html >.erb:7 > vendor/plugins/active_scaffold/frontends/default/views/_horizontal_subform_ >record.html.erb:15 ... > +++ > class TopicItemsController < ApplicationController > ... > active_scaffold :topic_items do | config | > ... > config.columns << :page_status > ... > end > ... > end > +++ > class TopicItem < ActiveRecord::Base > ... > def page_status > page = self.web_page > page.status > end > ... > end > +++ > > I have a Topic model and a TopicItem model and they have a one-to-many > association. > When I click "Edit" of one of the records in /topics/list page, the > error above occured. > > The Topic object has 4 TopicItem objects. > I found TopicItem.page_status is called 5 times and the error occurs > at the fifth call since all attributes of the TopicItem object are > nil. > As Andreius mentioned in Issue 691, it must be caused by the new > record in the subform. > > Is this behavior expected? > Should I always check nil for an empty model?
If you want to render page_status in the form, and you want to allow creating new topic items, you should check nil, you can use page.try(:status) for example. If you don't want to allow creating topic items, define authorized_for_create? in TopicItem model and return false. -- Sergio Cambra .:: entreCables S.L. ::. Mariana Pineda 23, 50.018 Zaragoza T) 902 021 404 F) 976 52 98 07 E) [email protected] -- You received this message because you are subscribed to the Google Groups "ActiveScaffold : Ruby on Rails plugin" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/activescaffold?hl=en.
