1

Мне тяжело понять, что, черт возьми, происходит здесь.STI, подвалы и сбои в проверке

У меня есть страница модели, и у нее есть два подкласса, называемых QeopPage и GymPage. Я пытаюсь создать gympage но валидация в обоих классах продолжают неудачу с 'Validation failed: Title can't be blank, Meta description can't be blank'

class GymPage < Page 
    self.set_table_name="pages"    

    validates :meta_description, presence:true 

end 

class Page < ActiveRecord::Base 
    validates :title, :presence=>true 

end 

Я думал, что это может быть проблемой PARAMS, но нет ничего в моем сервере журналы, чтобы указать это. Я могу сделать gympage в консоли .... Вот соответствующий журнал сервера SNIPPET

Parameters: {"utf8"=>"✓", "authenticity_token"=>"ULWHNAM71V3T+tEgYFaJfWtIQ7twYwktmdo6OSduiYE=", "gym_page"=>{"meta_title"=>"esfwef", "meta_description"=>"wefwefwef", "title"=>"wefwefwef", "body"=>"wefwef", "slug"=>"about", "asset_attachment_title"=>""}, "commit"=>"Update page", "venue_id"=>"venue_one"} 
    Admin Load (0.4ms) SELECT `admins`.* FROM `admins` WHERE `admins`.`id` = 633 ORDER BY `admins`.`id` ASC LIMIT 1 
    Venue Load (0.5ms) SELECT `venues`.* FROM `venues` WHERE `venues`.`slug` = 'mitre-passage-8754d82e-8eeb-4d9f-91e4-c13b3661991c' ORDER BY venues.title ASC LIMIT 1 
    (0.2ms) BEGIN 
    Admin Load (0.4ms) SELECT `admins`.* FROM `admins` ORDER BY `admins`.`id` ASC LIMIT 1 
    Admin Load (0.3ms) SELECT `admins`.* FROM `admins` WHERE `admins`.`id` = 2 LIMIT 1 
    Banner Load (0.3ms) SELECT `banners`.* FROM `banners` WHERE `banners`.`id` IS NULL LIMIT 1 
    CACHE (0.0ms) SELECT `banners`.* FROM `banners` WHERE `banners`.`id` IS NULL LIMIT 1 
    (0.2ms) ROLLBACK 
Completed 422 Unprocessable Entity in 998ms 

Я должен добавить, что контроллер работает, как ожидалось - параметры передается правильно.

Что, черт возьми, происходит ?!

обновление

код контроллера

def create 
    @gym_page = GymPage.new(params[:gym_page_params]) 
    @gym_page.admin=current_admin 
    if @gym_page.save! 
     flash[:notice] = 'Page created' 
     redirect_to admin_venue_gym_pages_path(@venue) 
    else 
     flash[:error] = 'There was an error' 
     render :new 
    end 
    end 
+0

Вы можете разместить код контроллера «Ошибка может возникнуть оттуда – kasperite

+0

использовать' @gym_page = GymPage.new (params [: gym_page]) '. В соответствии с атрибутами страницы журнала входа в журнал запрос проходит через gym_page. –

+0

DOH !, спасибо @NarenSisodiya – user3868832

ответ

1

В соответствии с бревенчатым спортзалом запроса атрибуты страницы передаются внутри gym_page так что вам нужно сделать следующее в вас контроллер

@gym_page = GymPage.new(params[:gym_page])