In looking at this again, I discovered that having the "closed_beta_mode" flag
in application.yml set to true causes the filter chain to halt at inappropriate
junctures (even when a user is logged in), so the topics_controller never gets
to the :before_filter that sets @forum and @topic. I haven't seen any other
controllers affected so I don't know why it happens here, but if I remove that
flag in application.yml, everything's fine.
Guess I will have to "hide" my app behind a :before_filter in
application_controller.rb that requires a login instead of using this flag.
On Feb 9, 2010, at 1:55 PM, Patrick wrote:
> When I try to visit any page that contains a topic (show, edit, etc
> for a given topic), I am getting this:
>
> You have a nil object when you didn't expect it!
> The error occurred while evaluating nil.editable_by?
>
> The offending line is in this method:
>
> def authorized?
> %w(new create).include?(action_name) || @topic.editable_by?
> (current_user)
> end
>
> Basically, @topic is nil even though the topic I am trying to view
> exists. What's even more curious is that the server reveals that
> the :before_filter function that sets the @forum and @topic variables
> isn't being called:
>
> Processing TopicsController#show (for 127.0.0.1 at 2010-02-09
> 13:27:26) [GET]
> Parameters: {"forum_id"=>"1-project-board", "id"=>"1-this-is-a-dummy-
> project"}
> [I18n] loading locale: en from config
> [I18n] Locale set to en
> User Load (1.2ms) SELECT * FROM "users" WHERE ("users"."id" = 1)
> LIMIT 1
>
> NoMethodError (You have a nil object when you didn't expect it!
> The error occurred while evaluating nil.editable_by?):
> vendor/plugins/community_engine/app/controllers/topics_controller.rb:
> 118:in `authorized?'
> haml (2.2.17) lib/sass/plugin/rails.rb:19:in `process'
>
> There should be a line in there that looks something like " SELECT *
> FROM "forums" WHERE ("forums"."id" = 1) LIMIT 1", and something
> similar for topics, shouldn't there? This function:
>
> def find_forum_and_topic
> @forum = Forum.find(params[:forum_id])
> @topic = @forum.topics.find(params[:id]) if params[:id]
> end
>
> doesn't look like it is being called.
>
> Any ideas?
>
> --
> You received this message because you are subscribed to the Google Groups
> "CommunityEngine" 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/communityengine?hl=en.
>
--
You received this message because you are subscribed to the Google Groups
"CommunityEngine" 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/communityengine?hl=en.