Ember: достать во фронт ошибку валидации модели из rails api ?


#1

Привет всем!
Ребят, помогите достать во фронт ошибку валидации модели из rails api, бьюсь над казалось бы совсем тривиальной задачей уже который день.
Ember 1.10
Rails 4.1

Имею контроллер:

  def index

    @menu = Menu.find_or_create_by(day: params[:date])

    if params[:date]
      respond_with [Menu.find_or_create_by(day: params[:date])]
    else
      respond_with [Menu.first_available]
    end
  end

Имею валидацию в модели:

  def validate_menu
      menu = self
      if menu.day > Date.today
        menu.errors[:base] << "This menu can't be too far from us"
      end
  end

Как мне достать еррор меседж модели во фронт чтобы можно было показать его в шаблоне:

{{#each error in errors.base}}
  <h2>{{error.message}}</h2>
{{/each}}


(Bacb) #2

Телега вперёд лошади запрежена. И до валидатора тут не долетает воздействие. Чтиво.
Вместо этого
if params[:date].to_date < Menu.last.day + 7.days
надо Menu.find_or_create_by делать.


#3

Окей, это я не в ту сторону пошел.
Но если оставить только find_or_create , то валидация срабатывает таким образом, что меню не создаётся и консоль рапортует отсутствующий темплейт.

ActionView::MissingTemplate - Missing template api/v1/menus/index, api/base_api/index with {:locale=>[:en], :formats=>[:json], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee]}. Searched in:

Об “menu.errors[:base] << “This menu can’t be too far from us”” контроллер ни сном ни духом :frowning:


(Bacb) #4

Обычно как-то так на ошибку если валидация не прошла

render json: @menu.errors, status: :unprocessable_entity

Проверь в консоли срабатывает ли вообще эта валидация.