目前在我的 Rails 应用程序中,我有用户、样本和瓶子。
样本属于瓶子和提交它的用户。瓶子不属于用户。
class Swatch < ActiveRecord::Base
mount_uploader :swatch, SwatchUploader
belongs_to :user
belongs_to :bottle
end
class Bottle < ActiveRecord::Base
has_many :swatches
end
class User < ActiveRecord::Base
has_many :swatches
end
目前,用户可以从瓶子的展示页面上传瓶子的新样本。
这是样本控制器:
class SwatchesController < ApplicationController
def create
@bottle = Bottle.find(params[:bottle_id])
@user = current_user
@swatch = @bottle.swatches.create(swatch_params)
redirect_to bottle_path(@bottle)
end
private
def swatch_params
params.require(:swatch).permit(:swatch, :user_id, :bottle_id)
end
end
哈姆勒:
= form_for([@bottle, @bottle.swatches.build]) do |f|
= f.label :swatch
= f.file_field :swatch
= f.submit
使用此设置,除非我将当前用户的 ID 作为隐藏字段传递,否则表单将无法工作。但我知道这是不好的做法,我想避免这种情况。
所以我的问题是:如何通过控制器传递bottle_id
当前用户和当前用户?user_id