2

在偏移量上 - 我是 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

我希望有人至少可以为我指出正确的方向...

欧文

4

0 回答 0