2013-04-18 3 views
0

В настоящее время я работаю над проектом с монгоидами и рельсами. Вот код:@ не разрешено в качестве имени переменной экземпляра

class Account 
    include Mongoid::Document 
    include Mongoid::Timestamps 

    field :account_name, type: String 

    has_many :groups 
end 

class Group 
    include Mongoid::Document 

    field :group_name, type: String 

    belongs_to :account 
    has_and_belongs_to_many :groups 
end 

class GroupsController < ApplicationController 
    before_filter :require_login, :find_company 

    def new 
    @group = @company.groups.new 
    end 

    def create 
    @group = @company.groups.new params[:group] 
    if @group.save 
     redirect_to people_path 
    else 
     render :new 
    end 
    end 

    private 

    def find_company 
    @company = current_account.groups.find(params[:company_id]) if params[:company_id] 
    end 
end 

И ошибка, которая возвращается в:

@' is not allowed as an instance variable name (NameError) 
./app/controllers/groups_controller.rb:5:in `new' 

Я не могу найти много вокруг прибегая к помощи этого вопроса, но казалось бы, вопрос лежит отношения has_and_belongs_to_many, но я не уверен.

Любые идеи будут оценены.

Благодаря

+1

Я думаю, что ошибка также будет, если 'params [: company_id]' возвращает nil, то вы вызываете 'groups.new' на объект' nil'. – Zippie

+0

Какая версия Ruby вы используете? 'ruby -v' –

+0

один раз вы можете попробовать это? '@group = @ company.groups.build' в' new'. –

ответ

1

Проблема в том, что я был недоразумением has_and_belongs_to_many. Я решил проблему, удалив это!

Спасибо, ребята, за комментарии.

Смежные вопросы