RAILS: назначение поля ввода с информацией, выбранной из выпадающего списка - PullRequest
0 голосов
/ 29 апреля 2019

Я немного запутался в приведенном ниже, если бы мне посоветовали, я был бы признателен

В моей схеме есть таблицы ниже

школы

t.string "name"
t.string "address"
t.string “town”
t.integer "category_town_id"

category_towns

t.string "name"

модели

school belongs_to :category_town
category_town has_many :schools

школьный контроллер

def create
    @user = current_user
    @school = @user.schools.create(school_params)
    @school.town = @school.category_town.name

    respond_to do |format|
      if @school.save
    redirect_to @school
      else
        format.html { render :new }
        format.json { render json: @school.errors, status: :unprocessable_entity }
      end
    end
  end

я хотел бы сделать следующее:

  • при создании школы и выборе category_town_id = 2 присвоить town той же информации, что иcategory_town_id = 2
  • , например, если @school.category_town.name равно London, убедитесь, что @school.town также London
  • я попытался сделать это в действии create контроллера @school.town = @school.category_town.nameно это, похоже, не работает

Ваш совет будет высоко ценится

1 Ответ

0 голосов
/ 03 мая 2019
@school = @user.schools.create(school_params)
@school.update_attributes(town: @school.category_town.name)

ИЛИ

@school = @user.schools.new(school_params)
@school.town = @school.category_town.name
@school.save

Сначала будет создана запись, а затем обновлен атрибут школьного объекта. Второй будет инициализировать новый экземпляр школы, настроить атрибут города. Но тогда вам нужно вызвать save на объекте, чтобы сохранить изменения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...