Javascript 将ProfileImage添加到照片控制器

Javascript 将ProfileImage添加到照片控制器,javascript,css,ruby-on-rails,carrierwave,photos,Javascript,Css,Ruby On Rails,Carrierwave,Photos,我已经安装了CarrierWave宝石。没有图库,因为我已经设置好了,所以照片属于用户而不是图库 我在照片表中添加了一个avatar列。其他列为:id、created\u at、updated\u at、image、name、user\u id 问题是我如何设置一个操作,以便用户可以单击“生成配置文件图像”,并对avatar列进行更改?这应该通过单击图像的缩略图版本或进行文本覆盖来完成 我的意思的一个例子: 用户Z将四张照片上传到他们的个人资料中。用户Z访问他们的个人资料并选择其中一张上传的照片

我已经安装了CarrierWave宝石。没有图库,因为我已经设置好了,所以照片属于用户而不是图库

我在照片表中添加了一个
avatar
列。其他列为:id、created\u at、updated\u at、image、name、user\u id

问题是我如何设置一个操作,以便用户可以单击“生成配置文件图像”,并对
avatar
列进行更改?这应该通过单击图像的缩略图版本或进行文本覆盖来完成

我的意思的一个例子:

用户Z将四张照片上传到他们的个人资料中。用户Z访问他们的个人资料并选择其中一张上传的照片作为他们的个人资料图像(化身)

class photocontroller“新建”
结束
结束
def调整大小(宽度、高度、重力=‘中心’)
操纵do | img|
img.combine_选项do| cmd|
cmd.resize“#{width}”
如果img[:宽度]“编辑”
结束
结束
def销毁
@photo=photo.find(参数[:id])
@照片。销毁
flash[:notice]=“已成功销毁照片。”
将_重定向至@photo.gallery
结束
def头像
@photo=photo.find参数[:photo_id]
当前_user.default_photo=@photo
将_重定向到“/profile”
结束
结束
视图(在个人资料上显示拇指照片):



您可以这样做,以便呈现可用照片库,并允许用户为其DP/Avatar/Profile图片选择一张

class UserAvatarController < ApplicationController

def edit
@gallery = current_user.gallery
end

def update
if params[:photo_id].present?
  current_user.update_attributes avatar_id: params[:photo_id]
else
  flash[:error] = "No photo selected"
  render action: "edit"
  end
 end
end
class UserAvatarController
您有一个
用户
和一个
用户
照片
,其中一个可能是
化身

我建议您在
用户
上设置一个
avatar\u id
,并建立如下关系:

class User < ActiveRecord::Base
  has_many :photos
  belongs_to :avatar, class_name: 'Photo'
end
(您可能希望使用新控制器的原因是为了保持“干燥”)

我想你会有一个成员
route
像这样:

resources :photos do
  member do
    post :avatar
  end
end
button_to('Set as Avatar', [:avatar, @photo])
和这样的
动作

resources :photos do
  member do
    post :avatar
  end
end
button_to('Set as Avatar', [:avatar, @photo])
然后在视图中引用它,如下所示:

@user.avatar.image_url(:thumb)

这样就可以了。

给它一个单独的控制器似乎没有必要。难道我不应该只向照片表添加一个
avatar
列,然后在照片控制器内分配一个操作,使所选照片id的列不为空吗?这就是我的愿景,但因为太简单,我似乎无法编译它。我将创建一个新实体:Photo user_id:int album_id:int,用于存储所有用户的所有照片,然后允许每个用户通过添加用户Photo_id:int,将任何照片设置为其个人资料中的照片。此外,还限制了对设置照片的权限“仅适用于恶魔”。如果你需要,我可以在Github中实现它。我同意在用户表中有一个头像id是最好的选择。但是在一个
用户
模型中有一行
属于:avatar
让我很难过,并提醒我“你拥有的东西最终会拥有你”这句话是多么真实……)
@user.avatar.image_url(:thumb)