私はfind_byでそれを参照することによってuser_idをparamsに渡すことに問題があります。私は、ユーザーが入力するピン番号を持っています。それが有効であるかどうかを確認するためにチェックされます。そうであれば、そのユーザーのIDを取得し、データベースに保存するためにparamsに配置します。ユーザIDの参照の問題
class InventoriesController < ApplicationController
before_action :set_inventory, only: [:show, :edit, :update, :destroy]
def index
@inventories = Inventory.all
end
def show
end
def new
@inventory = Inventory.new
end
def edit
end
def create
if @user = User.find_by(pin: params[:pin])
@inventory = Inventory.new(inventory_params)
@inventory.user_id = @user.id
if @inventory.valid?
@inventory.save
else
end
else
end
end
def update
respond_to do |format|
if @inventory.update(inventory_params)
format.html { redirect_to @inventory, notice: 'Inventory was successfully updated.' }
format.json { render :show, status: :ok, location: @inventory }
else
format.html { render :edit }
format.json { render json: @inventory.errors, status: :unprocessable_entity }
end
end
end
def destroy
@inventory.destroy
respond_to do |format|
format.html { redirect_to inventories_url, notice: 'Inventory was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_inventory
@inventory = Inventory.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def inventory_params
params.require(:inventory).permit(:eq_type_id, :equipment_id, :chauffeur_id, :user_id)
end
end
はので、これは=> {user_idは1985年のものではなく、それは私にエラーを与えたときに、私は
「在庫」を参照してくださいので、それはだと仮定することができます保存されませんコントローラ"eq_type_id" => "1"、 "equipment_id" => "1"、 "chauffeur_id" => "1"、 "user_idは" => "1985"}
た私が望む間違った道ハンドルするuser_id d。それは、USER_IDする必要があります。1.
今、私はレールコンソールにアクセスし、
ユーザー= User.find_by(ピン:1985)やっていた場合、私は、ユーザーオブジェクトを取得
を:私は新しい在庫を開始した場合、その後
#<User id: 1, email: "[email protected]", created_at: "2017-08-11 18:39:22", updated_at: "2017-08-11 18:40:22", admin: true, pin: "1985">
インベントリ= Inventory.new
私はその後
inventory.user_id = user.id
によってインベントリオブジェクトにUSER_IDを割り当てることができ、在庫オブジェクト#<Inventory id: nil, eq_type_id: nil, equipment_id: nil, chauffeur_id: nil, created_at: nil, updated_at: nil, user_id: nil>
を得ます
在庫オブジェクトをもう一度見てみると、署名された
#<Inventory id: nil, eq_type_id: nil, equipment_id: nil, chauffeur_id: nil, created_at: nil, updated_at: nil, user_id: 3>
今の形で残りは正しくない「ゼロ」を示すに充填されているが、USER_IDはまだいくつかの理由で1985として起動します。だから私はレールのコンソールでそれが動作する理由はわかりませんが、アプリケーションではそうではありません。あなたがtext_field
のため:user_id
を使用して
どのリクエストから 'params [:pin_number]'が得られますか? – Pavan
また、残りのコードを表示できますか?この行 'if @user = User.find_by(pin_number:params [:pin_number])が間違っているbtw – Pavan
私はそれが投稿であると信じるでしょう。 – Allen