2013-09-26 2 views
0

Я пытаюсь написать параметры модели компании. Но у меня есть ошибка undefined method `model_name 'для NilClass: Class в этой точке = simple_form_for @company, url: update_settings_company_path do | f |. Где я должен установить @company?Невозможно написать параметры модели. Ruby on Rails

Контроллер

def change_settings  
    @vacation_days = current_company.vacation_days 
    @illnes_days = current_company.illnes_days 
    end 

    def update_settings 
    if @company.update(company_params) 
     redirect_to account_company_path, notice: t('company.settings_changed') 
    else 
     render action: 'change_settings' 
    end 
    end 

private 
    def company_params 
    params.require(:company).permit(:vacation_days, :illnes_days) 
    end 

Просмотр

.company_settings 
    = simple_form_for @company, url: update_settings_company_path do |f| 
    = f.error_notification 
    = f.input :vacation_days 
    = f.input :illnes_days 
    %br 
    = f.submit t('common.save'), class: 'btn' 
    = link_to t('common.back'), account_company_path, class: 'btn' 

маршруты

resource :company, only: :all do  
    get :change_settings 
    post :update_settings 
    patch :update_settings 
    end 

Что случилось? Помогите мне пожалуйста

+0

Я исправил его! В поле зрения '@ company' заменена' current_company'. Добавлен метод @company = current_company' для обновления. –

ответ

0

Вы не задаете переменную экземпляра @company в обоих ваших действиях. Вы можете сделать это с помощью before_filter, как это:

before_filter :find_company 

def change_settings  
    @vacation_days = current_company.vacation_days 
    @illnes_days = current_company.illnes_days 
end 

def update_settings 
    if @company.update(company_params) 
    redirect_to account_company_path, notice: t('company.settings_changed') 
    else 
    render action: 'change_settings' 
    end 
end 

private 

    def company_params 
    params.require(:company).permit(:vacation_days, :illnes_days) 
    end 

    def find_company 
    @company = current_company 
    end 
+0

я вставил его в метод change_settings 'четкости change_settings @company = current_company @vacation_days = current_company.vacation_days @illnes_days = current_company.illnes_days' Но теперь я получаю эту ошибку неопределенный метод' обновление»для ноль: NilClass определение функции update_settings if @ company.update (company_params) ' –

+0

Ошибка возникает в' update_settings_company_path', поэтому вам нужно сделать это в update_settings –

+0

независимо от неопределенного метода 'model_name 'для NilClass: Class –

0

Попробуйте вместо этого, Вам нужно установить переменную экземпляра, прежде чем использовать его. По умолчанию для переменной экземпляра установлено значение nil.

def update_settings 
    @company = current_company 
    if @company.update(company_params) 
     redirect_to account_company_path, notice: t('company.settings_changed') 
    else 
     render action: 'change_settings' 
    end 
    end 
+0

Это не поможет. любой неопределенный метод 'model_name 'для NilClass: Class –

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