Ruby on rails rails:使用从oauth twitter导入的用户图像预填充表单

Ruby on rails rails:使用从oauth twitter导入的用户图像预填充表单,ruby-on-rails,paperclip,twitter-oauth,Ruby On Rails,Paperclip,Twitter Oauth,所以我有一个web应用程序,可以让用户注册twitter。因此,有个人资料图片和名称与他们的用户帐户相关联 他们还可以装箱配置文件(另一种型号),在这些配置文件中,他们可以填写姓名、照片等 我成功地从twitter上的用户名中预填充了name字段,如下所示: 在my profiles_controller.rb中: 我想做的是在这个表单中导入用户图像(从twitter导入) 所以我试着: def new @pin = Pin.new :twitter => current_us

所以我有一个web应用程序,可以让用户注册twitter。因此,有个人资料图片和名称与他们的用户帐户相关联

他们还可以装箱配置文件(另一种型号),在这些配置文件中,他们可以填写姓名、照片等

我成功地从twitter上的用户名中预填充了name字段,如下所示:

在my profiles_controller.rb中:

我想做的是在这个表单中导入用户图像(从twitter导入)

所以我试着:

  def new
    @pin = Pin.new :twitter => current_user.name, :image => current_user.image
  end
但我在表格中得到的只是一张破损的图片预览

当我使用回形针在我的应用程序上上传图像时,有没有办法将twitter图像传输到表单中的回形针?我不知道怎么做。任何帮助都将不胜感激

编辑:

以下是我的用户模型的一部分,我从twitter Oauth检索用户图像: User.rb:

我在视图中这样调用用户图像:

<%= image_tag user.image %>

但问题是如何将用户图像上传到个人资料表单:

我有:app/profile/views/_form.html.erb:



如果用户不想从其twitter个人资料上传不同的个人资料图片,我如何欺骗这个f.file_字段来自动导入users.image?

您真的不需要这样做。如果您查看文档,Twitter会提供一个指向配置文件图像的链接

"profile_image_url": 
         "http://a0.twimg.com/profile_images/2284174872/7df3h38zabcvjylnyfe3_normal.png"
将URL存储在用户记录中,如果没有可用的用户上载图像,则使用URL显示图像

您可以在每次oAuth登录时将其刷新为最新的URL,这样您就可以始终显示用户最新的Twitter配置文件图像

编辑

因此,在您的用户模型中创建一个字段来存储twitter图像url

rails g migration AddTwitterImageToUser twitter_image.string
rake db:migrate
通过Twitter登录时填充字段

  def self.from_omniauth(auth)
    where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
      user.provider = auth.provider
      user.uid = auth.uid
      user.name = auth.info.nickname
      user.twitter_image = auth.info.profile_image_url
    end
  end
然后显示

<% if user && user.twitter_image.present? %>
  <img src="<%= user.twitter_image %>" >
<% end %>

" >

我个人不知道“昵称”“作为Twitter API中的一个可用字段,因此我对
auth
对象中的
info
属性的内容不太肯定。。。您可能需要通过输入对象来确认图像url是否可用。。。将其转储到记录器或使用
pry

嘿,史蒂夫,谢谢你的回答。这是一个很好的选择,你是对的。我不知道如何从url显示图像?有什么想法可以让我走上正轨吗?你能在基于oAuth检索用户记录的地方发布代码吗?没问题@SteveTurczyn我用更多信息编辑了我的问题。谢谢你的时间。我已经在我的答案中添加了更多信息,希望对你有所帮助。
rails g migration AddTwitterImageToUser twitter_image.string
rake db:migrate
  def self.from_omniauth(auth)
    where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
      user.provider = auth.provider
      user.uid = auth.uid
      user.name = auth.info.nickname
      user.twitter_image = auth.info.profile_image_url
    end
  end
<% if user && user.twitter_image.present? %>
  <img src="<%= user.twitter_image %>" >
<% end %>