在偏移量上 - 我是 Rails 的新手,并且正在苦苦挣扎..
我正在尝试在我的 pin 上传中实现https://github.com/basgys/rubyctaculous ...
我有一个脚手架,其中将图像(或 pin)上传到 Amazon S3,并且返回 URL 存储在 Rails 数据库中。
然后,我希望将其发送到 Pictaculous(使用提到的 RubyGem)以获取调色板,该调色板存储在我的 pin 数据库中的“调色板”列中,以便在“显示”视图中读取......
当然使用强参数...
我在下面的代码中添加了注释。
首先,我在 controller.rb 的底部创建了这个参数:
def palette_find
@pictaculous = Pictaculous::Client.new
colors = pictaculous.color_palette_for_image(:image) #This would be the image path from Amazon S3 stored in :image
puts colors.inspect
=> [:palette] #How do I put the returning data into palette column???
end
end
(这是我不知道我在做什么的部分)
然后,我希望参数“palette_find”在“if @pin.save”之后的“create”操作期间在 controller.rb 中激活,这是使用图像更新数据库的位置:
def create
@pin = current_user.pins.build(pin_params)
if @pin.save
#I would assume you'd need to add something here involving "palette_find" because you'd have to have S3 confirmation before pulling from the database.
if #Then perhaps do the if ____ ensuring that "palette_find" worked.
redirect_to @pin, notice: 'Pin was successfully created.'
else
render action: 'new'
end
end
(其他信息)
正确的用户参数看起来像:
def correct_user
@pin = current_user.pins.find_by(id: params[:id])
redirect_to pins_path, notice: "Not authorized to edit this pin!" if @pin.nil?
end
和 pin_params
def pin_params
params.require(:pin).permit(:description, :image)
end
我可能还需要像palette_params这样的东西吗?
def palette_params
params.require(:pin).permit(:palette)
end
我希望有人至少可以为我指出正确的方向...
欧文