Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails4关联自动保存不起作用_Ruby On Rails_Ruby On Rails 4_Activerecord_Associations - Fatal编程技术网

Ruby on rails Rails4关联自动保存不起作用

Ruby on rails Rails4关联自动保存不起作用,ruby-on-rails,ruby-on-rails-4,activerecord,associations,Ruby On Rails,Ruby On Rails 4,Activerecord,Associations,我是Rails新手 我有一个模型关联(属于->有很多),但是应用程序没有将关联模型的id保存在外键列中 迁移文件: class CreatePartnerAdvertisements < ActiveRecord::Migration def change create_table :partner_advertisements do |t| t.belongs_to :user, index: true t.belongs_to :co

我是Rails新手

我有一个模型关联(属于->有很多),但是应用程序没有将关联模型的id保存在外键列中

迁移文件:

class CreatePartnerAdvertisements < ActiveRecord::Migration
  def change
    create_table :partner_advertisements do |t|
        t.belongs_to :user,     index: true
        t.belongs_to :county,   index: true

        t.text    :description, null: true

        t.string  :city,        null: true,     limit: 100

        t.integer :age,         null: false,    limit: 120
        t.integer :height,      null: true,     limit: 300
        t.integer :weight,      null: true,     limit: 300

        t.timestamps null: false

        t.timestamps null: false
    end
  end
end

因此,您可以在请求中看到county_id为9,但在数据库中,保存后始终为1…:(

您需要在
合作伙伴广告参数中允许
县id

只需添加如下内容:

def partner_advertisement_params
  #params[:partner_advertisement]
  params.require(:partner_advertisement).permit(:age, :height, :weight, :city, :county, :description, :style, :club, :level, :goal, :weekly, :occasionally, :years, :is_active, :county_id)
end

您需要在您的
合作伙伴广告参数中允许
县id

只需添加如下内容:

def partner_advertisement_params
  #params[:partner_advertisement]
  params.require(:partner_advertisement).permit(:age, :height, :weight, :city, :county, :description, :style, :club, :level, :goal, :weekly, :occasionally, :years, :is_active, :county_id)
end

服务器日志中是否存在未经允许的参数错误?是否也可以显示控制器?是否也可以显示控制器?是否也可以显示控制器?是的,您是对的,但为什么我需要允许外键?因为我允许:country…这是因为
country\u id
被定义为名称对于您的
集合,请选择
。这实际上很好,因为数据库字段也将具有此名称。
country\u id
是到达控制器的参数的名称。
country
只是关联的名称。是的,您是对的,但是为什么我需要允许外键?因为我允许了:country…它是b因为
country\u id
被定义为
collection\u select
的名称。这实际上很好,因为数据库字段也会有这个名称。
country\u id
是到达控制器的参数的名称。
country
只是关联的名称。
class PartnerAdvertisementsController < ApplicationController
  before_action :authenticate_user!
  before_action :set_partner_advertisement, only: [:show, :edit, :update, :destroy]

  # GET /partner_advertisements
  # GET /partner_advertisements.json
  def index
    @partner_advertisements = PartnerAdvertisement.where(is_active: true)
  end

  # GET /partner_advertisements/1
  # GET /partner_advertisements/1.json
  def show
  end

  # GET /partner_advertisements/new
  def new
    @partner_advertisement = PartnerAdvertisement.new
  end

  # GET /partner_advertisements/1/edit
  def edit
  end

  # POST /partner_advertisements
  # POST /partner_advertisements.json
  def create
    @partner_advertisement = PartnerAdvertisement.new(partner_advertisement_params)
    #@partner_advertisement.user_id = current_user.id

    respond_to do |format|
      if @partner_advertisement.save
        format.html { redirect_to @partner_advertisement, notice: 'Partner advertisement was successfully created.' }
        format.json { render :show, status: :created, location: @partner_advertisement }
      else
        format.html { render :new }
        format.json { render json: @partner_advertisement.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /partner_advertisements/1
  # PATCH/PUT /partner_advertisements/1.json
  def update
    respond_to do |format|
      if @partner_advertisement.update(partner_advertisement_params)
        format.html { redirect_to @partner_advertisement, notice: 'Partner advertisement was successfully updated.' }
        format.json { render :show, status: :ok, location: @partner_advertisement }
      else
        format.html { render :edit }
        format.json { render json: @partner_advertisement.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /partner_advertisements/1
  # DELETE /partner_advertisements/1.json
  def destroy
    @partner_advertisement.destroy
    respond_to do |format|
      format.html { redirect_to partner_advertisements_url, notice: 'Partner advertisement was successfully destroyed.' }
      format.json { head :no_content }
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_partner_advertisement
      @partner_advertisement = PartnerAdvertisement.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def partner_advertisement_params
      #params[:partner_advertisement]
      params.require(:partner_advertisement).permit(:age, :height, :weight, :city, :county, :description, :style, :club, :level, :goal, :weekly, :occasionally, :years, :is_active)
    end
end
Started PATCH "/partner_advertisements/1" for 10.0.2.2 at 2015-10-11 20:01:06 +0000
Cannot render console from 10.0.2.2! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by PartnerAdvertisementsController#update as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"dVNIi2H59EuZFrlrE+1ujRzDauJdc4Kkox6TbWNzpGK1mOoyfk6U8s9B/+HzASofd7DLe8/kdn4UKKIPCepjog==", "partner_advertisement"=>{"description"=>"yeap yeapr", "city"=>"Eger", "county_id"=>"9", "age"=>"45", "height"=>"43", "weight"=>"435", "style"=>"asdfdsafdf", "club"=>"adsfdf", "level"=>"asdfdsf", "goal"=>"sdfdsf", "weekly"=>"4", "occasionally"=>"3", "years"=>"3", "is_active"=>"1"}, "commit"=>"Update Partner advertisement", "id"=>"1"}
  [1m[35mUser Load (1.6ms)[0m  SELECT  "users".* FROM "users" WHERE "users"."id" = ?  ORDER BY "users"."id" ASC LIMIT 1  [["id", 1]]
  [1m[36mPartnerAdvertisement Load (1.6ms)[0m  [1mSELECT  "partner_advertisements".* FROM "partner_advertisements" WHERE "partner_advertisements"."id" = ? LIMIT 1[0m  [["id", 1]]
Unpermitted parameter: county_id
  [1m[35m (0.1ms)[0m  begin transaction
  [1m[36m (0.2ms)[0m  [1mcommit transaction[0m
Redirected to http://localhost:3000/partner_advertisements/1
Completed 302 Found in 15ms (ActiveRecord: 3.6ms)
def partner_advertisement_params
  #params[:partner_advertisement]
  params.require(:partner_advertisement).permit(:age, :height, :weight, :city, :county, :description, :style, :club, :level, :goal, :weekly, :occasionally, :years, :is_active, :county_id)
end