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.


Reply via email to