代码之家  ›  专栏  ›  技术社区  ›  ARTLoe

RAILS:使用从下拉选择器中选择的信息指定输入字段

  •  0
  • ARTLoe  · 技术社区  · 6 年前

    下面我有点困惑,如果有人能给我建议,我将不胜感激

    我的模式中有以下表格

    学校

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

    category\u城镇

    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\u town\u id=2
    • 例如,如果 @school.category_town.name London 确保 @school.town 也是 伦敦
    • 我尝试在控制器的创建操作中执行此操作 @school.town = @school.category_town.name 但这似乎不起作用

    非常感谢您的建议

    0 回复  |  直到 6 年前
        1
  •  0
  •   Int'l Man Of Coding Mystery    6 年前
    @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
    

    第一个将创建记录,然后更新学校对象上的属性。第二个将初始化学校的新实例,调整town属性。但是,您需要调用对象上的save来持久化更改