Bodacious/blogit

Route issue.

Opened this issue · 14 comments

Hi guys,
I have just installed blogit into my Rails 4 application. When I go to /blog I get routing error of every single route I have got. I get "undefined local variable or method". It is like that it won't load my router at all.

Not sure if it make sense though. Please let me know what you want me to put here so you guys can have a look.

I have current_user defined in ApplicationController.
In the installation what I didn't understand is "declare which of your models acts as blogger in your app".
Where should I declare that? so that might be the issue here.

Thanks in advance.

Hi @houmanka - you have to call the blogs() method in your user model.

class User < ActiveRecord::Base

  blogs
end

Thats what we mean by "declare which of your models acts as blogger in your app"

@houmanka

When you say router, are you referring to routes? If so, I think the following section in the Rails guide should help.

http://edgeguides.rubyonrails.org/engines.html#routes

Basically, when on a page within the Blogit engine, you need to specify main_app prior to your normal app's path. For example, main_app.root_path. Likewise, outside of the Blogit engine, your paths need to be blogit.blog_path.

However, line 82 of the blogit.rb initializer allows you "to call named routes without the main_app prefix." Here's the link to that file within the sample Blogit app.

https://github.com/KatanaCode/BlogitExample/blob/master/config/initializers/blogit.rb

Hi @emaxon
I haven't change anything in the blogit engine. I followed the installation and then I typed /blog in the url.

This is my route file:

ProjectName::Application.routes.draw do
  mount Blogit::Engine => "/blog"
  resources :finance_quotes
  root to: 'static_pages#home'
  resources :users
end

If I go to any other page all are fine and there is no rounting or method error.

Thanks again for your help.

screen shot 2014-01-22 at 2 04 29 pm

Hi @houmanka,

The problem exists in your View — specifically your _header.html.erb

You need to either prepend all of your paths with main_app.path_name (ie. main_app.user_path) OR uncomment line 82 of the config/initializers/blogit.rb file (remember to restart your Rails server if you do this).

Basically, when you are go to your blog, you are within the Blogit engine and must specify that the paths are external to that engine.

I have added main_app as prefix to all of my links and everything works. Thank you.

Now I get a new error:
Authentication does work because when I logout I can't see the "New Blog post".
When I login and I click on the "New Blog post" I get this error:
undefined local variable or method `login_required' for #Blogit::PostsController:0x007fc331b1d9a0

Thanks again for your help mate.

Can you post your application_controller.rb?

My only point of reference on this will be the file provided in the example Blogit repo here:

https://github.com/KatanaCode/BlogitExample/blob/master/app/controllers/application_controller.rb

hmmm,
Mine is different:

I have made my own Authentication and using Declarative Authorisation for the Access List.
Anyway I have added the login_required mothod and all are good.

Now when I try to save the post I get User#username is not defined
Do I need to make this in the User table? my authentication is based on the email and password.

Thanks again guys.

I think this might be because the show action will, by default, call the display name method. See the config template config.blogger_display_name_method = :your_method_name_here

Where should I define that :username method? in the application_controller.rb?

Thanks mate

No - it's a method that's defined on your model.

It's used in this partial to show who wrote the post

In most cases this would be :username or :full_name but since every app will be different, we give the option to customise which model method is used.

NICE,
All done mate.
Thanks again for your help.
Cheers

Hi,

I am trying to use blogit in my application.
Done all the bootstrapping as per the README.

Now clicking on /blog, I am also getting the error -
undefined local variable or method `root_path' for #<#<Class:0x007fb20

At the beginning of this issue, it is suggested to uncomment line#82 config.inline_main_app_named_routes = true from config/initializers/blogit.rb

However, it seems the config option inline_main_app_named_routes is no more valid.

Is there any other way to resolve the routing error apart from prefixing all routes with main_app.

Thanks in advance,
NR

Pl. ignore the above comment. I was able to resolve my issue with help from this article -
http://candland.net/2012/04/17/rails-routes-used-in-an-isolated-engine/

Thanks

yeah -- same error here . . . maybe this should be in the readme -- i haven't fixed the error yet, but this clearly happens with rails defaults set