2016-11-03 3 views
1

Я хочу показать всплывающее сообщение с сообщением update some other table also на основе определенного поля при создании записи.RAILS: Popup/warning/message before_create

Есть ли способ сделать это, используя проверки или ссылки на действия?

Я хочу сделать что-то, как показано ниже:

validates :fieldc, if: :should_update?, message: "Update fielda and fieldb in tablex also" 

bef should_update? 
    fieldc == "req_value" 
end 

Я уверен, что выше проверки не будет работать. Но я хочу показать всплывающее окно, если fieldc == req_value и запись должна быть создана. Есть ли способ сделать это?

Спасибо.

EDIT: Могу ли я сделать это следующим образом?

after_create :update_tablex 
    def update_tablex 
     if self.should_update? 
     flash[:notice] = 'Please update fielda and fieldb in tablex also' 
     else 
     flash[:notice] = 'Record updated successfully.' 
     end 
    end 


def should_update? 
    fieldc == "req_value" 
end 

Но И все еще получают NameError (undefined local variable or method 'flash' for #)

+0

Можете ли вы быть более ясным? Что вы подразумеваете под формой? – Mounika

+0

Сохранение простоты, есть ли способ показать всплывающее сообщение в модуле rails при выполнении создания нового действия? – Mounika

ответ

1

Это действительно проблема контроллера, и должны быть решен в контроллере, а не модель. Модель никогда не отвечает за управление логикой того, что просматривается и как работает рабочий процесс. Лучше всего было бы установить флэш-сообщение, которое показывает, что им нужно делать, и в качестве удобства перенаправить их на представление редактирования tablex.

в методе создания ...

def create 
    ... 
    if @record.save 
    if @record.should_update? 
     flash[:notice] = 'Please update fielda and fieldb in tablex also' 
     redirect_to edit_tablex_path(@record.tablex) 
    else 
     flash[:notice] = 'Record updated successfully.' 
     redirect_to @record 
    end 
    else 
    render :new 
    end 
end 
+0

Это довольно солидный подход –

+0

Я получаю следующую ошибку: 'NameError (неопределенная локальная переменная или метод' flash 'для #) ' – Mounika

+0

Извините, забыли знак равенства в моей пятой строке. Я отредактировал ответ. – SteveTurczyn

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